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 回答