我想在更新键的值之前测试字典中是否存在键。我编写了以下代码:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
我认为这不是完成这项任务的最佳方式。有没有更好的方法来测试字典中的关键字?
我想在更新键的值之前测试字典中是否存在键。我编写了以下代码:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
我认为这不是完成这项任务的最佳方式。有没有更好的方法来测试字典中的关键字?
当前回答
使用EAFP(请求宽恕比允许更容易):
try:
blah = dict["mykey"]
# key exists in dict
except KeyError:
# key doesn't exist in dict
请参阅其他堆栈溢出帖子:
在Python中使用“try”与“if”检查Python中是否存在成员
其他回答
Python中的字典有一个get('key',默认)方法。因此,您可以设置一个默认值,以防没有任何键。
values = {...}
myValue = values.get('Key', None)
只是给克里斯一个补充。B(最佳)答案:
d = defaultdict(int)
同样有效;原因是调用int()返回0,这是defaultdict在幕后(构造字典时)所做的,因此文档中的名称为“Factory Function”。
使用Python三元运算符:
message = "blah" if 'key1' in my_dict else "booh"
print(message)
Python字典具有名为__contains__的方法。如果字典具有键,则此方法将返回True,否则返回False。
>>> temp = {}
>>> help(temp.__contains__)
Help on built-in function __contains__:
__contains__(key, /) method of builtins.dict instance
True if D has a key k, else False.
您可以使用for循环来遍历字典,并获得要在字典中查找的键的名称。之后,检查是否存在或不使用if条件:
dic = {'first' : 12, 'second' : 123}
for each in dic:
if each == 'second':
print('the key exists and the corresponding value can be updated in the dictionary')