Skip to main content
 首页 » 编程设计

python之返回给定第三个列表的两个列表的索引列表

2025年05月04日19freeliver54

请问实现这一点最聪明、最pythonic的方法是什么:

输入:

i1 = [A,A,B] 
i2 = [x,y,x] 
i3 = [0,1,2] 

参数:

list = [[A,x],[B,x],[A,y]] 

(或者 list = [[A,B,A],[x,z,y]] 如果更简单的话)

当list匹配i1和i2时需要找到索引idx并输出i3[idx]

输出:

output = [0,2,1] 

我正在考虑列表推导式以查找 i1 和 i2 中所有出现的 (element1,element2) 但我无法做到:

idxs = [i for i,v in enumerate(zip(i1,i2)) if v==(x[0],x[1]) for x in list] 

请您参考如下方法:

你的理解非常接近,

这里我使用几乎相同的一个来创建一个将一对映射到一个索引的字典,然后只从中获取索引:

i1 = ['A','A','B'] 
i2 = ['x','y','x'] 
 
d = {tup: idx for idx,tup in enumerate(zip(i1,i2))} 
 
list = [['A','x'],['B','x'],['A','y']] 
 
result = [d[tuple(pair)] for pair in list] 
 
print(result) 

输出:

[0, 2, 1]