0

次のことを行うより正しい方法はありますか?

if a in dic.keys():
    dic[a] += 1
else:
    dic[a] = 1

つまり、それらのキーが存在しない可能性がある場合に、辞書内のキーに対応する値をインクリメントします。

4

4 に答える 4

9

使用dict.get:

dic[a] = dic.get(a, 0) + 1
于 2012-11-09T08:51:16.057 に答える
7

defaultdictを使用して、ディクショナリに存在しないキーのデフォルト値を提供できます。

>>> d = defaultdict(int)
>>> d[1] += 1
>>> d[1]
    1
>>> d[5]
    0
于 2012-11-09T08:51:27.517 に答える
2

collections.Counter() を使用できます

dic = collections.Counter()
dic['a'] += 1
dic['b'] # will be zero

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

于 2012-11-09T08:57:01.883 に答える
1

あなたが使用することができますdict.setdefault():

In [12]: dic=dict(zip(('a','b'),[0]*2))

In [13]: dic
Out[13]: {'a': 0, 'b': 0}

In [14]: dic['c']=dic.setdefault('c',0)+1

In [15]: dic
Out[15]: {'a': 0, 'b': 0, 'c': 1}

In [16]: dic['a']=dic.setdefault('a',0)+1

In [17]: dic
Out[17]: {'a': 1, 'b': 0, 'c': 1}

ループを使用する:

In [18]: dic=dict(zip(('a','b'),[0]*2))

In [19]: for x in ('a','b','c','a'):
   ....:     dic[x]=dic.setdefault(x,0)+1
   ....:     

In [20]: dic
Out[20]: {'a': 2, 'b': 1, 'c': 1}
于 2012-11-09T08:56:59.567 に答える