キーの値を更新する前に、辞書にキーが存在するかどうかをテストしたいと思いました。 以下のようなコードを書きました。
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
これは、このタスクを達成するための最良の方法ではないと思います。辞書のキーをテストする良い方法はありますか?
キーを呼び出す必要はありません。
if 'key1' in dict:
print "blah"
else:
print "boo"
これは、keysを呼び出すことで行う線形検索ではなく、辞書のハッシュを使用するため、より高速になります。
代わりに、setdefault
メソッドを使うことをお勧めします。 これは、あなたが望むことをすべて実行できるように聞こえます。
>>> d = {'foo':'bar'}
>>> q = d.setdefault('foo','baz') #Do not override the existing key
>>> print q #The value takes what was originally in the dictionary
bar
>>> print d
{'foo': 'bar'}
>>> r = d.setdefault('baz',18) #baz was never in the dictionary
>>> print r #Now r has the value supplied above
18
>>> print d #The dictionary's been updated
{'foo': 'bar', 'baz': 18}