我想在更新键的值之前测试字典中是否存在该键。 我编写了以下代码:
if 'key1' in dict.keys(): print "blah" else: print "boo"
我认为这不是完成这项任务的最佳方式。有没有更好的方法来测试字典中的键?
直接使用key in my_dict而不是key in my_dict.keys():
key in my_dict
key in my_dict.keys()
if 'key1' in my_dict: print("blah") else: print("boo")
这会更快,因为它使用字典的 O(1) 哈希,而不是执行 O(n )对键列表进行线性搜索。
in 测试dict 中是否存在键:
in
dict
d = {"key1": 10, "key2": 23} if "key1" in d: print("this will execute") if "nonexistent key" in d: print("this will not")
使用dict.get() 当键不存在时提供默认值:
dict.get()
d = {} for i in range(100): key = i % 10 d[key] = d.get(key, 0) + 1
要为每个键提供默认值,请使用dict.setdefault() 在每个作业上:
dict.setdefault()
d = {} for i in range(100): d[i % 10] = d.setdefault(i % 10, 0) + 1
...或者更好,使用 defaultdict 来自 collections 模块:
defaultdict
collections
from collections import defaultdict d = defaultdict(int) for i in range(100): d[i % 10] += 1
直接使用
key in my_dict
而不是key in my_dict.keys()
:这会更快,因为它使用字典的 O(1) 哈希,而不是执行 O(n )对键列表进行线性搜索。
in
测试dict
中是否存在键:使用
dict.get()
当键不存在时提供默认值:要为每个键提供默认值,请使用
dict.setdefault()
在每个作业上:...或者更好,使用
defaultdict
来自collections
模块: