我有多个列表,每个列表都是嵌套的,格式如下:
listA = [['A', '17']
['A', '16']
['A', '15']]
我想比较一个列表(比如说listA)和“任意”数量的其他列表,以获得listA和所有其他列表共有的第二个元素匹配,例如:
将listA与listB和listC进行比较:
listB = [['B', '17'],
['B', '12'],
['B', '11']]
listC = [['A', '18'],
['A', '17'],
['A', '15']]
此处所有列表之间的唯一匹配是“17”,因此结果应为:
new_list_A = [['A', '17']]
new_list_B = [['B', '17']]
new_list_C = [['C', '17']]
这里最好的方法是什么,什么是最pythonic解决方案?
答案 0 :(得分:2)
检查出来:
Microsoft.Win32.RegistryKey
答案 1 :(得分:0)
找到所有第二个元素的交集。然后返回第二个元素在交集中的每个列表中的所有元素。
#!/usr/bin/env python3
listA = [['A', '17'],
['A', '16'],
['A', '15']]
listB = [['B', '17'],
['B', '12'],
['B', '11']]
listC = [['C', '18'],
['C', '17'],
['C', '15']]
lists = [listA, listB, listC]
def to_set(a_list):
return {b for _, b in a_list}
intersection = to_set(lists[0])
for a_set in (to_set(a_list) for a_list in lists[1:]):
intersection = intersection & a_set
flattened_lists = (item
for a_list in lists
for item in a_list)
results = [item
for item in flattened_lists
if item[1] in intersection]