是否有更正确的方法来执行以下操作:
if a in dic.keys():
dic[a] += 1
else:
dic[a] = 1
即,当字典中的键可能不存在时,增加对应于键的值。
是否有更正确的方法来执行以下操作:
if a in dic.keys():
dic[a] += 1
else:
dic[a] = 1
即,当字典中的键可能不存在时,增加对应于键的值。
使用dict.get
:
dic[a] = dic.get(a, 0) + 1
您可以使用defaultdict为字典中不存在的键提供默认值。
>>> d = defaultdict(int)
>>> d[1] += 1
>>> d[1]
1
>>> d[5]
0
你可以使用 collections.Counter()
dic = collections.Counter()
dic['a'] += 1
dic['b'] # will be zero
请参阅http://docs.python.org/2/library/collections.html#collections.Counter
你可以使用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}