['a','a','b','c','c','c']
转换为
[2, 2, 1, 3, 3, 3]
并且{'a': 2, 'c': 3, 'b': 1}
['a','a','b','c','c','c']
转换为
[2, 2, 1, 3, 3, 3]
并且{'a': 2, 'c': 3, 'b': 1}
>>> x=['a','a','b','c','c','c']
>>> map(x.count,x)
[2, 2, 1, 3, 3, 3]
>>> dict(zip(x,map(x.count,x)))
{'a': 2, 'c': 3, 'b': 1}
>>>
这段代码应该会给出以下结果:
from collections import defaultdict
myDict = defaultdict(int)
for x in mylist:
myDict[x] += 1
当然,如果您想要中间的列表结果,只需从字典获取值(mydict.values())即可。
>>> l = ['a','a','b','c','c','c']
>>> Counter(l)
Counter({'c': 3, 'a': 2, 'b': 1})
后续构建[2, 2, 1, 3, 3, 3]
很容易。
>>> c = _
>>> [c[i] for i in l] # or map(c.__getitem__, l)
[2, 2, 1, 3, 3, 3]
set
来避免重复计数,使用列表方法count
来计算它们的数量,将它们存储在dict
中,其中项目作为键而出现次数作为值。l=["a","a","b","c","c","c"]
d={}
for i in set(l):
d[i] = l.count(i)
print d
输出:
{'a': 2, 'c': 3, 'b': 1}
a = ['a','a','b','c','c','c']
b = [a.count(x) for x in a]
c = dict(zip(a, b))
我已经包含了Wim的答案。好主意。
c = dict(zip(a, b))
可以用于计算 c
。 - Wimdict(zip(['a','a','b','c','c','c'], [2, 2, 1, 3, 3, 3]))
首先:
l = ['a', 'a', 'b', 'c', 'c', 'c']
map(l.count, l)
d=defaultdict(int)
for i in list_to_be_counted: d[i]+=1
l = [d[i] for i in list_to_be_counted]