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

新手上路,请多包涵

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

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

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

原文由 Mohan Gulati 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 511
2 个回答

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() 提供默认值:

 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 来自 collections 模块:

 from collections import defaultdict

d = defaultdict(int)

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

原文由 Chris B. 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

这会 快得多,因为它使用字典的 O(1) 散列而不是对键列表进行 O(n) 线性搜索。

原文由 Jason Baker 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题