如何比较列表列表的元素(Python)

时间:2012-10-04 18:12:17

标签: python list nested-lists

identical = 0
while x < len(BigList):
    while y < len(BigList):
        if BigList[x][0] == BigList[y][0] and y != x:
            identical += 1
        y += 1
    x += 1

如何正确查看大列表中每个列表的0th元素是否等于Big List中另一个列表中的另一个第0个元素?

即,我需要[[1,2],[2,3],[1,4],[2,5]]来制作identical=2因为2个列表的第0个元素等于另一个列表的0th元素

TIA

3 个答案:

答案 0 :(得分:6)

identical = len(BigList) - len(set(item[0] for item in BigList))

重复数量= BigList中的项目数减去唯一的第零个索引项目数

答案 1 :(得分:2)

首先列出第0个元素...然后计算出现次数(如果你是2.7+,你可以在你的第0个列表上使用collections.Counter

zeros = [mylist[0] for mylist in biglist]
my_dict = dict([(c,zeros.count(c)) for c in zeros])
dup_elems = filter(lambda key:my_dict[key]>1, my_dict.keys())
print len(dup_elems)

答案 2 :(得分:0)

  1. 计算在索引0处共享元素的子列表数。
  2. 计算相同子列表的数量。
  3. 两者之间的差异就是你所追求的。
  4. 代码:

    firstElems = zip(*L)[0]
    firstSames = sum(v for v in collections.Counter(firstElems).values if v != 1)
    equals = sum(v for v in collections.counter(tuple(l) for l in L).values if v!=1)
    answer = firstSames - equals
    

    希望这有帮助。