首页 > 解决方案 > 有效地为嵌套的元组列表找到匹配的索引和值

问题描述

我正在处理不同大小的列表,我的问题是:

假设我有两个不同大小的元组列表:

value1 = [(0, 1), (0, 2), (0, 3)]
value2 = [(0, 6), (0, 2), (0, 4), (0, 9), (0, 7)]

插入另一个列表:

my_list = [value1, value2]

附加a并按顺序返回时找到匹配索引的最有效方法是什么(最好是 O(n) )?结果应该类似于:mylistthird list

value3 = [(0, 1), (0, 2), (0, 3), (0, 5), (0, 7), (0, 10)]

mathing_values (my_list, value3): 
    
    my_list.append(value3)

    return ->  "The List 'value3' has a matching with 'value1' in 
                index 0 : (0, 1), index 1: (0, 2) and with 'value2'
                in index 4: (0, 7)"

Obs:如果它适用于多个列表(超过 3 个),那将是完美的

标签: pythonpython-3.xmatching

解决方案


我不确定这是最有效的方法,但可读且简单:

v3 = set(value3)

[set(x).intersection(v3) for x in my_list]

UPD:使用 dict 值作为索引的扩展解决方案:

v3 = set(value3)

[(i, k) for x in my_list for (i, k) in enumerate(set(x)) if k in v3]

推荐阅读