如何找到多个子列表列表的并集

时间:2016-12-06 20:14:47

标签: list python-3.x

我有6个不同的列表列表,类似于

    list1=[['hello',1,2,'b3'],['world',1,2,'b4']]
    list2=[['yo',4,5,'ba'],['lolz',1,4.35,'b4']]
    list3=[['yo',4,5,'ba'],['world',3,4.35,'b6']]
    list4=[['test',4,5,'b6'],['test',4,5,'b6']]

每个列表中可以有大约100个子列表,但它们在子列表中总是有4个条目。我想找到所有相同的子列表,并将它们放入最终列表中。所以它看起来像

    final=[['yo',4,5,'ba'],['test',4,5,'b6']]

模式很重要,因此子列表中的条目需要保持有序,但子列表的顺序无关紧要。我能做到这一点的最佳方式是什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

假设子列表中没有不可用的元素,我会将它们转换为元组并将它们提供给collections.Counter

from collections import Counter

big_list = [list1, list2, ...]
c = Counter(tuple(sublist) for l in big_list for sublist in l)
final = [list(i) for i in c if c[i] > 1]