Bob*_*Bob 3 python list count python-3.x
鉴于清单
List2 = ['Apple', 'Apple', 'Apple', 'Black', 'Black', 'Black', 'Green', 'Green', 'Red', 'Yellow']
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何计算列表中每个元素出现的次数.这必须非常简单,但我无法弄清楚.我在书中读到了关于count函数的内容,我决定尝试实现它.我以为会......
for item in List2:
newlist=[List2.count()]
Run Code Online (Sandbox Code Playgroud)
我认为这会引导我达到我的目的:
newlist=[3,3,2,1,1]
Run Code Online (Sandbox Code Playgroud)
但我收到一个TypeError,说count必须有一个参数.我对python非常陌生,如果可能的话,尽可能地减少所有内容.
Jon*_*nts 10
您可以使用collections.Counter,它为您提供了一个dict类似的对象(因为它还有一些用于计数目的的附加功能),它具有键作为项目,值为出现次数.
from collections import Counter
>>> li = ['Apple', 'Apple', 'Apple', 'Black','Black','Black','Green','Green','Red','Yellow']
>>> Counter(li)
Counter({'Black': 3, 'Apple': 3, 'Green': 2, 'Yellow': 1, 'Red': 1})
Run Code Online (Sandbox Code Playgroud)
然后你可以根据自己喜欢的方式对它进行排序......
一种(低效)预订顺序的方法是计算,然后索引到原始列表:
>>> counts = Counter(li)
>>> [counts[key] for key in sorted(counts, key=li.index)]
[3, 3, 2, 1, 1]
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用groupby(但这取决于连续的项目):
>>> from itertools import groupby
>>> [len(list(g)) for k, g in groupby(li)]
[3, 3, 2, 1, 1]
Run Code Online (Sandbox Code Playgroud)