我想在更新密钥的值之前测试字典中是否存在密钥。我写了以下代码:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
我认为这不是完成这项任务的最佳方式。有没有更好的方法来测试字典中的密钥?
in
是测试dict
键存在的预期方法。
d = dict()
for i in xrange(100):
key = i % 10
if key in d:
d[key] += 1
else:
d[key] = 1
如果你想要一个默认值,你总是可以使用dict.get()
:
d = dict()
for i in xrange(100):
key = i % 10
d[key] = d.get(key, 0) + 1
... 如果您想始终确保任何键的默认值,您可以使用collections
模块中的defaultdict
,如下所示:
from collections import defaultdict
d = defaultdict(lambda: 0)
for i in xrange(100):
d[i % 10] += 1
... 但一般来说, in
关键字是最好的方法。
您可以使用in关键字测试字典中是否存在密钥:
d = {'a': 1, 'b': 2}
'a' in d # <== evaluates to True
'c' in d # <== evaluates to False
在变更之前检查字典中是否存在键的常见用法是默认初始化值(例如,如果您的值是列表,并且您希望确保有一个空列表,您可以将其追加到插入键的第一个值时)。在这种情况下,您可能会发现collections.defaultdict()
类型是有意义的。
在旧代码中,您可能还会发现has_key()
一些用法,这是一种不推荐使用的方法,用于检查字典中是否存在键(只需key_name in dict_name
使用key_name in dict_name
)。