所以我有一個P = dict()
。我有以下代碼:檢查字典中的鍵是否定義
def someFunction():
P['key'] += 1
'''do other task'''
什麼是檢查是否P['key']
被定義或沒有簡單的方法?
我檢查了How do I check if a variable exists?但我不確定這是否回答我的問題。
所以我有一個P = dict()
。我有以下代碼:檢查字典中的鍵是否定義
def someFunction():
P['key'] += 1
'''do other task'''
什麼是檢查是否P['key']
被定義或沒有簡單的方法?
我檢查了How do I check if a variable exists?但我不確定這是否回答我的問題。
您應該使用來自collections模塊的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))
打印:
[email protected] /tmp> python test.py
0: 6
1: 11
2: 1
這當然假定OP希望您在P''「關鍵」的原因是決定他是否應該使用'+ = 1'或'= 1' :) – dano 2014-10-08 01:44:57
@dano,不是真的。你只需修改你的構造函數爲defaultdict,就像'defaultdict(lambda:1)'一樣。 – brunsgaard 2014-10-08 01:49:05
@brunsgaard它確實假設OP想要初始化值,如果它不存在,而不是隻是跳過它(或做別的事情)。 – jayelm 2014-10-08 01:51:29
主要有兩種方法在一個普通的字典查詢:
的 「三思而後行」 的範例。 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];
'in'運營商... – HuStmpHrrr 2014-10-08 01:53:58