Skip to main content
 首页 » 编程设计

python之根据python中的条件将项目添加到列表的子列表中

2025年05月04日13zhengyun_ustc

我有如下 2 个列表

list1=[['a',2,3],['b',4,5],['c',6,7]] 
list2=[['a',5],['b',3],['c',8]] 

我想根据子列表的条件将这 2 个列表作为 1 个列表加入。 如果 list1 中子列表的第一个元素等于 list2 中子列表的第一个元素,则 list2 中子列表的第二个元素应添加到 list1

这里的结果应该是

list1=[['a',2,3,5],['b',4,5,3],['c',6,7,8]] 

我可以像下面这样对单个列表项执行此操作

list1=['a',2,3] 
list3=['a',5] 
 
if list1[0]==list3[0]: 
   list1.extend(list3[1:]) 
else: 
   list1 
print list1 

帮助我像上面提到的那样为子列表做同样的事情。我无法应用 2 个 for 循环。

帮助我

请您参考如下方法:

这是你的初始数据:

>>> list1=[['a',2,3],['b',4,5],['c',6,7]] 
>>> list2=[['a',5],['b',3],['c',8]] 

然后,我们zip您的列表,我们使用列表理解生成新列表:

>>> [ a+b[1:] for a,b in zip( list1, list2 ) if a[0] == b[0] ] 

结果:

[['a', 2, 3, 5], ['b', 4, 5, 3], ['c', 6, 7, 8]] 

只需一行代码:)

已编辑 1

thanks but its not working if the list2=[['a',5],['c',8],['b',3]]. Help me

>>> list1=[['a',2,3],['b',4,5],['c',6,7]] 
>>> list2=[['a',5],['c',8],['b',3]]  # <--- other list2 

在不同的地方使用if:

>>> [ a+ ( b[1:] if a[0] == b[0] else [] )  for a,b in zip( list1, list2 ) ] 

结果:

[['a', 2, 3, 5], ['b', 4, 5], ['c', 6, 7]] 

已编辑 2

but the 2nd and 3rd sublist in list1 has values in list2 but its not arranged in sequence as list1.

压缩前排序。

>>> zipped_sorted_list = zip( sorted(list1), sorted(list2) )  
>>> [ a+ ( b[1:] if a[0] == b[0] else [] ) for a,b in zipped_sorted_list ] 

结果

[['a', 2, 3, 5], ['b', 4, 5, 3], ['c', 6, 7, 8]]