我相信这应该是非常简单的,但似乎我无法直接思考这一点。
我有一个如下列表:
comp = [Amazon, Apple, Microsoft, Google, Amazon, Ebay, Apple, Paypal, Google]
我只想打印最常出现的单词。我做了以下事情:
cnt = Counter(comp.split(','))
final_list = cnt.most_common(2)
这给了我以下输出:
[[('Amazon', 2), ('Apple', 2)]]
我不确定most_common()中传递了什么参数,因为每个输入列表可能有所不同。所以,我想知道如何打印最常出现的单词,一个列表为3,另一个列表为4。因此,对于上面的示例,输出如下:
[[('Amazon', 2), ('Apple', 2), ('Google',2)]]
由于
答案 0 :(得分:3)
您可以通过维护两个变量maxi
和maxi_value
来存储最大元素而不是它发生的次数。
dict = {}
maxi = None
maxi_value = 0
for elem in comp:
try:
dict[elem] += 1
except IndexError:
dict[elem] = 1
if dict[elem] > mini_value:
mini = elem
print (maxi)
答案 1 :(得分:3)
您可以在此处使用itertools.takewhile
:
>>> from itertools import takewhile
>>> lis = ['Amazon', 'Apple', 'Microsoft', 'Google', 'Amazon', 'Ebay', 'Apple', 'Paypal', 'Google']
>>> c = Counter(lis)
>>> items = c.most_common()
获取最大数量:
>>> max_ = items[0][1]
仅选择count = max_
的项目,并在找到计数较少的项目后立即停止:
>>> list(takewhile(lambda x: x[1]==max_, items))
[('Google', 2), ('Apple', 2), ('Amazon', 2)]
你误解了Counter.most_common
:
most_common(self, n=None)
列出
n
最常见的元素及其最常见的计数 至少。如果n
为None,则列出所有元素计数。
即n
不是此处的计数,它是您要返回的热门项目数。它基本上等同于:
>>> c.most_common(4)
[('Google', 2), ('Apple', 2), ('Amazon', 2), ('Paypal', 1)]
>>> c.most_common()[:4]
[('Google', 2), ('Apple', 2), ('Amazon', 2), ('Paypal', 1)]
答案 2 :(得分:1)
查找其中一个热门字词的出现次数,然后过滤most_common
返回的整个列表:
>>> mc = cnt.most_common()
>>> filter(lambda t: t[1] == mc[0][1], mc)