python更好的设置字典值的方法



在python中做这个更好的方法是什么当前= {}

if key in current:
current[key] += 1
else:
current[key] = 1

谢谢你的帮助

与内置字典功能相比,使用defaultdict有一些优势。首先,使用一次查找比两次查找更有效地执行这种未初始化的增量。

from collections import defaultdict
current = defaultdict(int)
current[key] += 1

另一方面,对于dict,无论您如何编写它,您仍然需要对get和set进行单独的查找。

使用setdefault:

current = {}
a = ['a', 'b', 'a']
for i in a:
current[i] = current.setdefault(i, 0) + 1
print(current)

输出:

{'a': 2, 'b': 1}

或者使用get:

current = {}
a = ['a', 'b', 'a']
for i in a:
current[i] = current.get(i, 0) + 1

或者如果你想获得频率计数:

from collections import Counter
a = ['a', 'b', 'a']
current = Counter(a)
print(current)

输出:

Counter({'a': 2, 'b': 1})

这是代码,defaultdict(int)将添加一个默认值的键,如果它不存在:

from collections import defaultdict
current = defaultdict(int)
keys = ['a','b', 'c', 'a']
for key in keys:
current[key]+=1
print (current)

输出:

defaultdict(<class 'int'>, {'a': 2, 'b': 1, 'c': 1})

这是defaultdict行为的良好文档以及它是如何实现的。