Python:从列表列表中计算每个项目的出现次数

时间:2014-07-12 09:09:43

标签: python list

我是编码的新手。我需要计算列表列表中每个项目的出现次数。以下是我处理的列表列表的示例:

GC = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]

并将结果打印在两列中。第1列=列表元素列表的范围,第2列=每个元素的总出现次数。

3 个答案:

答案 0 :(得分:2)

您可以使用一些内置库/模块轻松完成此任务:

from itertools import chain
from collections import Counter

l = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]

l = chain.from_iterable(l)

print Counter(l)

chain.from_iterable(l)将列表展平为1维,然后Counter构造函数创建一个Counter对象,该对象基本上是将每个唯一项映射到列表中的计数。

答案 1 :(得分:1)

如果您想要每个数字和列数:

l = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]

flattened = ([x for y in l for x in y])
counts = [[ele,flattened.count(ele)]for ind, ele in enumerate(set(flattened))]
print counts 
[[1, 2], [2, 3], [3, 3], [4, 4], [5, 3], [6, 2], [7, 2], [8, 2], [9, 2], [10, 1]]

答案 2 :(得分:0)

如果您刚接触编程,那么也许您正在这样做以了解循环如何工作,在这种情况下,下面的示例可能有所帮助。但重要的是要注意它不是最有效的方法,请参阅上面的sshashank124或Padraic Cunningham。

GC = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]

nums = list(set(flatten(GC)))
occurances = []

for i in nums:        
    p = 0

    for i2 in GC:   
        for k2 in i2:  
            if i == k2:   
                p += 1   

    occurances.append(p)  # save total count in list
print zip(nums, occurances)