私は通常、Python 辞書を操作するときに次のイディオムを使用します。
try:
val = dct[key]
except KeyError:
print key, " is not valid"
大きな辞書の場合、ステートメント
if key in dct:
# do something
あまり効率的ではありません(読んだことは覚えていますが、実際にも気づいたことがあります)
今日、私は defaultdict を使用していましたが、defaultdict が KeyError を返すことは決してなく、代わりに元の辞書を更新することを忘れていました。
defaultdict を更新せずにルックアップを実行するにはどうすればよいですか? ユーザーがキーを再入力できるように、エラーを出力する必要があります。
ありがとうございました!
更新:いくつかの投稿者は、遅いという私の信念if key in dct:
は間違っていると示唆しています。私は戻って、以前読んだ本の方が使いやすい本を調べましたtry: except:
。これは 2002 年の Alex Martelli による Python Cookbook の Recipe 1.4 であり、ここでもオンラインで見つけることができます: Add an entry to dictionary。昔の記憶なんてあてにならない!レシピには「遅い」とは記載されておらず、使用していませんin
が、has_key
. それは単にそれtry: except:
がよりPythonicであることを示しています(少なくともレシピの本のバージョン)。訂正と回答ありがとうございます。