给定一个列表,如何计算该列表中的项?

2024-03-28 22:48:14 发布

您现在位置:Python中文网/ 问答频道 /正文

给我名单

List2 = ['Apple', 'Apple', 'Apple', 'Black', 'Black', 'Black', 'Green', 'Green', 'Red', 'Yellow']

我想知道如何计算列表中每个元素出现的次数。这必须是难以置信的简单,但我不明白。我在书中读到了count函数,我决定尝试实现它。我以为会是。。在

^{pr2}$

我想这会让我得到我想要的:

newlist=[3,3,2,1,1]

但我收到一个打字错误,说伯爵必须有一个论点。我对python非常陌生,所以如果可以的话,尽可能地把所有的事情都搞糟。在


Tags: 函数元素apple列表count错误greenred
3条回答

你可以试试这个:

new_list = [List2.count(x) for x in set(List2)]

这相当于:

^{pr2}$

或者对于字典:

new_dict = {x:List2.count(x) for x in set(List2)}

您可以使用collections.Counter,它为您提供了一个类似于dict的对象(因为它还有一些对count类似用途有用的附加功能),它的项是key,出现的次数是一个值。在

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})

那就交给你吧。。。在

保存订单的一种(低效)方法是计数,然后索引到原始列表中:

^{pr2}$

另一种方法是使用groupby(但这取决于连续的项):

>>> from itertools import groupby
>>> [len(list(g)) for k, g in groupby(li)]
[3, 3, 2, 1, 1]

如果你是Python新手,我认为最好是编写解决方案,而不是仅仅导入一些东西。下面是一个简单易懂的方法:

counter = {}
for elem in List2:
    counter[elem] = counter.get(elem, 0) + 1

相关问题 更多 >