Python 返回两个列表之间匹配的一组索引

Python 返回两个列表之间匹配的一组索引,python,Python,假设我有两个列表: >>list_a=[(a,b),(b,c),(e,d),(w,z)] >>list_b=[(f,g),(e,d),(w,z)] >>compare_lists(list_a,list_b) would output [(2,1),(3,2)] 我们看到(e,d)是 列表和2都是它在列表_a中的索引,1是它在列表_b中的索引,通过(w,z)的类似逻辑,我们得到(3,2)。我该怎么办 实现上述目标?我基本上是在尝试获取列表a和列表b

假设我有两个列表:

>>list_a=[(a,b),(b,c),(e,d),(w,z)]
>>list_b=[(f,g),(e,d),(w,z)]

>>compare_lists(list_a,list_b)
would output  [(2,1),(3,2)]
 

我们看到(e,d)是 列表和2都是它在列表_a中的索引,1是它在列表_b中的索引,通过(w,z)的类似逻辑,我们得到(3,2)。我该怎么办
实现上述目标?我基本上是在尝试获取列表a和列表b索引中有匹配项的有序对的列表。

您可以创建一个由第一个列表中的有序对键入的字典,然后在第二个列表上迭代,并对照字典进行检查:

list_a=[('a','b'),('b','c'),('e','d'),('w','z')]
list_b=[('f','g'),('e','d'),('w','z')]

d = {p:i for i,p in enumerate(list_a)}
matches = [(d[p],i) for i,p in enumerate(list_b) if p in d]

print(matches) #[(2, 1), (3, 2)]