搜索

首页  >  问答  >  正文

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

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

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

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

P粉489081732P粉489081732464 天前857

全部回复(2)我来回复

  • P粉674876385

    P粉6748763852023-10-09 00:56:30

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

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

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

    回复
    0
  • P粉914731066

    P粉9147310662023-10-09 00:33:49

    in 测试dict 中是否存在键:< /p>

    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(100):
        key = i % 10
        d[key] = d.get(key, 0) + 1

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

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

    ...或者更好,使用 defaultdict< /a> 来自 collections 模块:

    from collections import defaultdict
    
    d = defaultdict(int)
    
    for i in range(100):
        d[i % 10] += 1

    回复
    0
  • 取消回复