Python 检查dict中是否定义了密钥

Python 检查dict中是否定义了密钥,python,Python,所以我有一个p=dict()。我有以下代码: def someFunction(): P['key'] += 1 '''do other task''' 检查是否定义了p['key'],最简单的方法是什么 我检查了,但我不确定这是否回答了我的问题。您应该使用集合模块中的defaultdict from collections import defaultdict d = defaultdict(int) d[0] = 5 d[1] = 10 for i in range(3

所以我有一个
p=dict()
。我有以下代码:

def someFunction():
    P['key'] += 1
    '''do other task'''
检查是否定义了
p['key']
,最简单的方法是什么


我检查了,但我不确定这是否回答了我的问题。

您应该使用集合模块中的
defaultdict

from collections import defaultdict

d = defaultdict(int)
d[0] = 5
d[1] = 10

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

# Note that d[2] was not set before the loop

for k, v in d.items():
    print('%i: %i' % (k,v))
印刷品:

brunsgaard@archbook /tmp> python test.py
0: 6
1: 11
2: 1

检查普通dict的两种主要方法:

“三思而后行”的范例。当然,else语句不是必需的,除非您想定义一些替代行为:

if 'key' in P:
    P['key'] += 1
else:
    pass
“请求原谅比允许更容易”的范例:

try:
    P['key'] += 1
except KeyError:
    pass  # Or do something else

或者,您可以按照建议使用
defaultdict

通常我会使用

if some_key in some_dict:
    print("do something")
高级用法:若你们有字典,键是字符串,值是列表。当键存在时,您希望将元素添加到键关联值列表中。所以你可以

some_dict[some_key] = some_dict.get(some_key, []) + [new_item];

当然,这假设OP想要检查P中的
'key'的原因是决定他是否应该使用
+=1
=1
:)@dano,不是真的。您只需将构造函数修改为defaultdict,如so
defaultdict(lambda:1)
@brunsgaard它确实假设OP想要初始化不存在的值,而不是跳过它(或做其他事情)。@JesseMu对,这就是我的意思。