比较Python嵌套列表
我有两个嵌套列表,每个嵌套列表里包含两个字符串,比如:
list 1 [('EFG', '[3,4,5]'), ('DEF', '[2,3,4]')] and list 2 [('DEF', '[2,3,4]'), ('FGH', '[4,5,6]')]
我想比较这两个列表,找出那些完全相同的嵌套列表。在这个例子中,只有 ('DEF','[2,3,4]')
这个会被返回。因为列表可能会很长,有没有什么有效的方法来做到这一点呢?
6 个回答
0
只需要使用set,这是内置的集合支持
def get_set(list1,list2):
s = set(list1)
s &= set(list2)
return s
然后砰,你的集合并就完成了
3
用集合来实现这个功能是个很不错的方法,但为了达到最佳性能,你应该只使用一个集合:
set1 = set([('EFG', '[3,4,5]'), ('DEF', '[2,3,4]')])
matches = [x for x in [('DEF', '[2,3,4]'), ('FGH', '[4,5,6]')] if x in set1]
8
如果列表里只包含字符串的元组,那么最简单的方法就是用集合的交集(&)来处理:
>>> set([('EFG', '[3,4,5]'), ('DEF', '[2,3,4]')]) & set([('DEF', '[2,3,4]'), ('FGH', '[4,5,6]')])
set([('DEF', '[2,3,4]')])