增加python字典的潜在空键的值

时间:2012-11-09 08:50:21

标签: python dictionary

是否有更正确的方法来执行以下操作:

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

即。当这些键可能不存在时,增加与字典中的键相对应的值。

4 个答案:

答案 0 :(得分:9)

使用dict.get

dic[a] = dic.get(a, 0) + 1

答案 1 :(得分:7)

您可以使用defaultdict为字典中不存在的键提供默认值。

>>> d = defaultdict(int)
>>> d[1] += 1
>>> d[1]
    1
>>> d[5]
    0

答案 2 :(得分:2)

您可以使用collections.Counter()

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

请参阅http://docs.python.org/2/library/collections.html#collections.Counter

答案 3 :(得分: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}