比较Python嵌套列表

3 投票
6 回答
5363 浏览
提问于 2025-04-15 17:48

我有两个嵌套列表,每个嵌套列表里包含两个字符串,比如:

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]')])

撰写回答