检查字典中是否已存在给定的键

2022-09-05 00:46:14

我想在更新键的值之前测试字典中是否存在键。我写了下面的代码:

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

我认为这不是完成这项任务的最佳方式。有没有更好的方法来测试字典中的键?


答案 1

测试字典中是否存在密钥时:

d = {"key1": 10, "key2": 23}

if "key1" in d:
    print("this will execute")

if "nonexistent key" in d:
    print("this will not")

使用 dict.get() 在键不存在时提供默认值:

d = {}

for i in range(10):
    d[i] = d.get(i, 0) + 1

要为每个键提供默认值,请在每个赋值上使用 dict.setdefault():

d = {}

for i in range(10):
    d[i] = d.setdefault(i, 0) + 1

或使用集合模块中的 defaultdict

from collections import defaultdict

d = defaultdict(int)

for i in range(10):
    d[i] += 1

答案 2

直接使用而不是 :key in my_dictkey in my_dict.keys()

if 'key1' in my_dict:
    print("blah")
else:
    print("boo")

这将更快,因为它使用字典的O(1)哈希,而不是对键列表进行O(n)线性搜索。