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

2024-04-26 11:46:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我认为这不是完成这项任务的最好办法。有没有更好的方法来测试字典里的一把钥匙?


Tags: 方法代码inif字典密钥keyselse
3条回答

in是测试dict中是否存在密钥的方法。

d = dict()

for i in range(100):
    key = i % 10
    if key in d:
        d[key] += 1
    else:
        d[key] = 1

如果需要默认值,可以始终使用dict.get()

d = dict()

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

。。。如果您想始终确保任何键的默认值,那么可以使用defaultdict模块中的collections,如下所示:

from collections import defaultdict

d = defaultdict(int)

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

。。。但一般来说,in关键字是最好的方法。

您可以使用in关键字测试字典中是否存在键:

d = {'a': 1, 'b': 2}
'a' in d # <== evaluates to True
'c' in d # <== evaluates to False

在对字典进行更改之前,检查字典中是否存在键的常用方法是默认初始化值(例如,如果您的值是列表,并且您希望确保在插入键的第一个值时可以向其追加空列表)。在这种情况下,您可能会发现^{}类型很有趣。

在较旧的代码中,您还可以找到has_key()的一些用法,这是一种不推荐使用的检查字典中是否存在键的方法(只需使用key_name in dict_name)。

你不必叫钥匙:

if 'key1' in dict:
  print "blah"
else:
  print "boo"

这将是很大的faster,因为它使用字典的散列,而不是进行线性搜索,调用键可以做到这一点。

相关问题 更多 >