python - 有效地为嵌套的元组列表找到匹配的索引和值
问题描述
我正在处理不同大小的列表,我的问题是:
假设我有两个不同大小的元组列表:
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) )?结果应该类似于:mylist
third 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 个),那将是完美的
解决方案
我不确定这是最有效的方法,但可读且简单:
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]
推荐阅读
- kotlin - Docx TableWith FieldsMetadata and Velocity
- python - Pandas:将数据水平转为垂直,并让索引值与对应值的数量重复
- constraints - 如何在 Poisson GLM 中使用权重设置参数约束,例如 b1 > b2
- r - 使用列表获取原子错误
- discord - 如何使用谷歌助手 IFTTT 将 webhook 发送到不和谐
- python - 适用于 Lambda 的 AppDynamics 无服务器 APM。自动仪器泊坞窗层扩展。Python 应用程序。错误 = Extension.Crash
- c++ - C++用对象调用类函数不起作用
- java - 比较多个日历并使用开始和结束查找哪个更接近运行或现在处于活动状态
- c# - 异步,在 C# 中等待
- r - 如何在 r 中使用 2 个数据集重构列