List - How to find number of times an item appears
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How to calculate the occurrences of a list item in Python?
我正在做一种民意测验。为此,我使用的是python,而我所关注的部分是如何计算某个特定事物出现的次数,比如说,"general store"。
例如民意测验:
你在哪里看到的广告最多?
Store将军
超市
购物中心
小商店
如果需要,可以通过单选按钮提交投票数据。所有这些答案都将被附加到一个列表中,然后我想创建一个结果页面,显示每件事被投票多少次。
这工作:
1 2 3 4 | >>> from collections import Counter >>> data = ['Store', 'Office', 'Store', 'Office', 'Home', 'Nowhere'] >>> Counter(data) Counter({'Office': 2, 'Store': 2, 'Home': 1, 'Nowhere': 1}) |
首先,我要说的是,你可能对你的民意测验结果问题使用了错误的解决方法。为什么不为每个选项保留一个计数器,这样,您的文件,或者您用来存储此数据的任何后端不会随着响应的出现而线性增长。
更简单的原因是,您无论如何都要创建计数器,这里唯一的区别是,每次加载响应页面时,您都必须计算所有项目。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #initializing a variable with some mock poll data option1 ="general store" option2 ="supermarket" option3 ="mall" option4 ="small store" sample_data = [option1,option2,option1,option1,option3,option3,option4,option4,option4,option2] #a dict that will store the poll results results = {} for response in sample_data: results[response] = results.setdefault(response, 0) + 1 |
现在,结果将把列表中出现的每个字符串都作为一个键,以及它作为值出现的次数。
你要用
和
对于python 2.7+,可以使用
1 2 3 4 | >>> from collections import Counter >>> l = ['hello','hello','hello','there','foo','foo','bar'] >>> Counter(l).most_common() [('hello', 3), ('foo', 2), ('there', 1), ('bar', 1)] |
如果您不在2.7上,您可以改为这样做:
1 2 3 4 5 6 7 | >>> s = set(l) >>> d = {} >>> for i in s: ... d[i] = l.count(i) ... >>> d {'there': 1, 'bar': 1, 'hello': 3, 'foo': 2} |
如果你有清单,你可以
1 2 3 4 5 | ls = ["Mall","Mall","Supermarket"] ls.count("Mall") >>> 2 ls.count("General Store") >>> 0 |