计算给定组合在嵌套列表中出现的次数

时间:2015-04-03 15:54:10

标签: python python-3.x

我有一个名为huge_list的嵌套列表,因为名称显示它非常大。我需要知道如何获得子列表的2个元素的给定组合出现的次数,例如:

huge_list = [[6,10,5,4,40,99],[1,10,3,6,40,71],[2,10,3,4,40,98]]

count = 0
for x in huge_list:
    #print amount of times position 1 and 4 have the same combination
    count = count + 1

,输出为:

3
3
3

我尝试过类似的事情:

sum(x.count(huge_list[count][1]) for x in huge_list)

但它适用于其中一个项目,而不是两个项目。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果您在列表列表中查找索引14的所有组合的计数,则很难做得比:

import collections

huge_list = [[6,10,5,4,40,99],[1,10,3,6,40,71],[2,10,3,4,40,98]]
count = collections.Counter(((sublst[1], sublst[4]) for sublst in huge_list))

哪个会给你:

In [3]: count
Out[3]: Counter({(10,40): 3})

您可以在此之后获得确切的请求输出:

for sublst in huge_list:
    print(count.get((sublst[1], sublst[4]), 0))

答案 1 :(得分:1)

如果你有两个号码要检查,你可以总结:

huge_list = [[6,10,5,4,40,99],[1,10,3,6,40,71],[2,10,3,4,40,98]]

given = (10, 40)
print(sum((sub[1], sub[4]) == given for sub in huge_list))

答案 2 :(得分:0)

尝试了你的预期输出。我不知道你的期望是什么

huge_list = [[6,10,5,4,40,99],[1,10,3,6,40,71],[2,10,3,4,40,98]]
for i in huge_list:
    c = 0
    for j in huge_list:
        if i[1]==j[1] and i[4]==j[4]:
            c+=1
    print c

#output
3
3
3