2014-10-08 35 views

回答

1

您應該使用來自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 
+0

這當然假定OP希望您在P''「關鍵」的原因是決定他是否應該使用'+ = 1'或'= 1' :) – dano 2014-10-08 01:44:57

+0

@dano,不是真的。你只需修改你的構造函數爲defaultdict,就像'defaultdict(lambda:1)'一樣。 – brunsgaard 2014-10-08 01:49:05

+1

@brunsgaard它確實假設OP想要初始化值,如果它不存在,而不是隻是跳過它(或做別的事情)。 – jayelm 2014-10-08 01:51:29

3

主要有兩種方法在一個普通的字典查詢:

的 「三思而後行」 的範例。 else語句不是必需的,當然,除非你要定義一些備用的行爲:

if 'key' in P: 
    P['key'] += 1 
else: 
    pass 

的「更容易請求原諒比許可」範例:

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

或者你可以使用建議使用defaultdict

0

通常我會檢查鑰匙存在與

if some_key in some_dict: 
    print("do something") 

高級用法:如果你有一本字典,關鍵是字符串,值是一個列表。當密鑰存在時,您需要將一個元素添加到密鑰關聯的值列表中。所以,你可以

some_dict[some_key] = some_dict.get(some_key, []) + [new_item]; 
相關問題