在Python這很煩人有檢查某個鍵是否在字典中第一遞增之前:Python字典增量
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
是否有上述四行較短的替代品?
在Python這很煩人有檢查某個鍵是否在字典中第一遞增之前:Python字典增量
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
是否有上述四行較短的替代品?
你想要什麼叫做defaultdict
見http://docs.python.org/library/collections.html#collections.defaultdict
你有好幾個選擇。我喜歡用Counter
:
>>> from collections import Counter
>>> d = Counter()
>>> d[12] += 3
>>> d
Counter({12: 3})
或者defaultdict
:
>>> from collections import defaultdict
>>> d = defaultdict(int) # int() == 0, so the default value for each key is 0
>>> d[12] += 3
>>> d
defaultdict(<function <lambda> at 0x7ff2fe7d37d0>, {12: 3})
對於'lambda:0',你可以說'int'。 – hughdbrown
@hughdbrown:謝謝,我從來不知道。 – Blender
@hughdbrown沒有你的評論我永遠不會明白什麼是defaultdict在做什麼。謝謝。 –
變換:
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
以下使用setdefault
到:
my_dict[key] = my_dict.setdefault(key, 0) + num
你可以對兩個值做同樣的事嗎? – Mohsin