Skip to main content
 首页 » 编程设计

python之搜索操作问题

2025年05月04日13TianFang

我有两个列表:

a= [['A', 'B', 'C', 3], ['P', 'Q', 'R', 4]] 
 
b=[['K',1,1,1,1,1], ['L',1,1,1,1,1], ['M', 1,1,0,1,1], ['J', 0,0,0,0,0], ['A', 0,0,0,1,1], ['P',0,1,0,1,1 ]] 

我想要这样的输出:

Output=[['A', 0,0,0,1,1], ['P',0,1,0,1,1 ]] 

我正在尝试使用 a[idx][0] 在 b 中搜索 a。然后我想收集这些项目并希望输出类似于上面的内容。

我的代码如下:

Output=[] 
for idx in range(len(Test)): 
    a_idx = [y[0] for y in b].index(a[idx][0]) 
    a_in_b = b[a_idx] 
    Output.append(a_in_b[:]) 
 
print Output  

这没有给我想要的输出。有人可以帮忙吗?

请您参考如下方法:

首先,将 b 转换为字典:

b=[['K',1,1,1,1,1], ['L',1,1,1,1,1], ['M', 1,1,0,1,1], ['J', 0,0,0,0,0], ['A', 0,0,0,1,1], ['P',0,1,0,1,1 ] 
 
d = dict((i[0], i[1:]) for i in b) 
 
# d is now: 
{'A': [0, 0, 0, 1, 1], 
 'J': [0, 0, 0, 0, 0], 
 'K': [1, 1, 1, 1, 1], 
 'L': [1, 1, 1, 1, 1], 
 'M': [1, 1, 0, 1, 1], 
 'P': [0, 1, 0, 1, 1]} 

然后将d映射到a:

Output = [ i[:1] + d[i[0]] for i in a] 
 
# Output is now: [['A', 0, 0, 0, 1, 1], ['P', 0, 1, 0, 1, 1]]