如何对单词在列表中的使用次数进行排名

时间:2019-02-28 04:46:50

标签: python

我有一个包含多个单词的列表。看起来像这样:

Food = ['apple', 'orange', 'banana', 'orange', 'strawberry', 'apple', 'orange', banana', apple']

有什么办法可以对每种水果的使用次数进行排名?该代码还必须允许多个位置,如下所示:

(apple, 1), (orange, 1), (banana, 3), (strawberry, 4).

我尝试使用排名功能,但不知道从github下载并解压缩后该怎么做。

我不是在寻找每个单词被使用了多少次的次数,而更像是一种排名排序的事情。诸如1st,2nd,3rd之类的东西。但是,假设如果其中两个项目出现了3次,而其他项目发生的次数较少,则看起来像是:1、1、3、4、5等。

3 个答案:

答案 0 :(得分:1)

使用Counter的子类dict

In [1]: from collections import Counter

In [2]: food = ['apple', 'orange', 'banana', 'orange', 'strawberry', 'apple', 'orange', 'banana', 'apple']

In [3]: c = Counter(food)

In [4]: c
Out[4]: Counter({'apple': 3, 'banana': 2, 'orange': 3, 'strawberry': 1})

In [5]: c['orange']
Out[5]: 3

答案 1 :(得分:1)

这样的事情怎么样?

建立一个计数器字典,然后按值对字典进行排序。

Food = ['apple', 'orange', 'banana', 'orange', 'strawberry', 'apple', 'orange', 'banana','apple']

d = {}
for fruit in Food:
    d[fruit] = d.get(fruit, 0) + 1

ranked = sorted(d.iteritems(), key=lambda x: x[1], reverse=True)

排名为:

[('orange', 3), ('apple', 3), ('banana', 2), ('strawberry', 1)]

答案 2 :(得分:0)

一种解决方案是将食物添加到字典中,该字典中的值为计数。例如,这是一段代码,它遍历列表中的每种食物并更新计数。然后,您可以选择将其转换回列表:

Food = ["apple", "orange", "banana", "orange", "strawberry", "apple", "orange", "banana", "apple"]

FoodDict = {}
for f in Food:
    if f in FoodDict:
        FoodDict[f] += 1
    else:
        FoodDict[f] = 0
print(FoodDict)
FoodCountList = [(f, FoodDict[f]) for f in FoodDict]
print(FoodCountList)

哪些印刷品:

{'apple': 2, 'orange': 2, 'banana': 1, 'strawberry': 0}
[('apple', 2), ('orange', 2), ('banana', 1), ('strawberry', 0)]