这就是我做的.在python中有更好的方法吗?
for k in a_list: if kvMap.has_key(k): kvMap[k]=kvMap[k]+1 else: kvMap[k]=1
谢谢
S.L*_*ott 16
使用defaultdict
from collections import defaultdict
kvmap= defaultdict(int)
for k in a_list:
kvmap[k] += 1
Run Code Online (Sandbox Code Playgroud)
小智 9
单个元素:
a_list.count(k)
Run Code Online (Sandbox Code Playgroud)
所有元素:
counts = dict((k, a_list.count(k)) for k in set(a_list))
Run Code Online (Sandbox Code Playgroud)
我不知道,它基本上对我来说很好.您的代码简单易读,这是我认为pythonic的重要组成部分.
你可以修剪它有点像:
for k in a_list:
kvMap[k] = 1 + kvMap.get(k,0)
Run Code Online (Sandbox Code Playgroud)
这么老的问题,但考虑到添加到 adefaultdict(int)
是如此常见的用途,因此collections
有一个特殊的名称也就不足为奇了(自 Python 2.7 起)
>>> from collections import Counter
>>> Counter([1, 2, 1, 1, 3, 2, 3, 4])
Counter({1: 3, 2: 2, 3: 2, 4: 1})
>>> Counter("banana")
Counter({'a': 3, 'n': 2, 'b': 1})
Run Code Online (Sandbox Code Playgroud)