在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
行为的良好文档以及它是如何实现的。