イディオムと読みやすさについて質問があります。この特定のケースでは、Pythonの哲学が衝突しているようです。
ディクショナリBからディクショナリAを作成したい。Bに特定のキーが存在しない場合は、何もせずに続行する。
どっちがいい?
try:
A["blah"] = B["blah"]
except KeyError:
pass
または
if "blah" in B:
A["blah"] = B["blah"]
「許しをしなさい」対「単純さと明快さ」。
どちらがより良いのですか、そしてなぜですか?
A.update(B)
いきませんか?
has_key
優先しin
てチェックB.keys()
することで非推奨になりました。
.has_key
非推奨でありkeys
、py2kで不要なリストを作成し、py3kで冗長です
A = dict((k, v) for (k, v) in B if we_want_to_include(k))
。
if "blah" in B.keys()
、またはと書く方がよいでしょうif B.has_key("blah")
。