Pythonでは、キーをインクリメントする前に、まずキーが辞書にあるかどうかを確認する必要があります。
if key in my_dict:
my_dict[key] += num
else:
my_dict[key] = num
上記の4行の短い代替物はありますか?
別の方法は次のとおりです。
my_dict[key] = my_dict.get(key, 0) + num
かなりの数のオプションがあります。 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})
欲しいものはdefaultdictと呼ばれます
http://docs.python.org/library/collections.html#collections.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
少し異なるsetdefault
方法もあります:
my_dict.setdefault(key, 0)
my_dict[key] += num
他のロジックと組み合わせると、いくつかの利点があります。