检查给定的密钥是否已经存在于字典中
我想在更新密钥的值之前测试字典中是否存在密钥。 我写了下面的代码:
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
关键字做到这一点的最好办法。
您不必拨打电话:
if 'key1' in dict:
print "blah"
else:
print "boo"
这将会更快,因为它使用字典的散列,而不是进行线性搜索,而这种搜索通常使用键来完成。
您可以使用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
)。
上一篇: Check if a given key already exists in a dictionary
下一篇: How do I loop through or enumerate a JavaScript object?