我有一个包含多个单词的列表。看起来像这样:
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等。
答案 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)]