43

Python では、キーをインクリメントする前に、まずキーが辞書にあるかどうかを確認する必要があるのは面倒です。

if key in my_dict:
  my_dict[key] += num
else:
  my_dict[key] = num

上記の 4 行に代わる短いものはありますか?

4

6 に答える 6

78

別の方法は次のとおりです。

my_dict[key] = my_dict.get(key, 0) + num
于 2012-10-20T20:06:31.553 に答える
30

かなりの数のオプションがあります。私は使用するのが好き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})
于 2012-10-20T20:01:56.423 に答える
9

あなたが望むものは defaultdict と呼ばれます

http://docs.python.org/library/collections.html#collections.defaultdictを参照してください

于 2012-10-20T20:01:43.567 に答える
8

変身:

if key in my_dict:
  my_dict[key] += num
else:
  my_dict[key] = num

以下を使用してsetdefault

my_dict[key] = my_dict.setdefault(key, 0) + num
于 2012-10-20T20:05:54.597 に答える