Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递增python字典中可能为空的键的值_Python_Dictionary - Fatal编程技术网

递增python字典中可能为空的键的值

递增python字典中可能为空的键的值,python,dictionary,Python,Dictionary,是否有更正确的方法执行以下操作: if a in dic.keys(): dic[a] += 1 else: dic[a] = 1 即,当字典中的键可能不存在时,增加对应于这些键的值 使用: 可以使用为字典中不存在的键提供默认值 >>> d = defaultdict(int) >>> d[1] += 1 >>> d[1] 1 >>> d[5] 0 您可以使用dict.setdefault

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

if a in dic.keys():
    dic[a] += 1
else:
    dic[a] = 1
即,当字典中的键可能不存在时,增加对应于这些键的值

使用:

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

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

您可以使用
dict.setdefault()

使用循环:

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}

您可以使用collections.Counter()


请参见

我只想要值大于0的键的条目您是什么意思?defaultdict处理问题中提出的情况。如何循环使用dict键,但遇到不存在的键?这就是粘贴代码但将其更改为更通用,然后在提交之前不正确阅读代码时发生的情况。。我删掉了迭代(这在原始上下文中是有意义的)没有单一的“正确”方法,但是
defaultdict
是最快的,IIRC。非常好,谢谢。这是奇怪的语法,虽然tbh-有点低了readability@trideceth12可读性方面缺乏什么?你想要什么?这比经过验证的答案好吗?第一方面,导入是必需的,另一方面,语法有很大不同。我最终使用了这个,但公认的答案更普遍适用,但计数器提供了其他细节。例如,可以添加两个计数器对象。
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}
dic = collections.Counter()
dic['a'] += 1
dic['b'] # will be zero