Skip to main content
 首页 » 编程设计

python之根据python中的条件将子列表单独分组在列表中

2025年05月04日22zhenyulu

我有子列表

list=[['RD-2','a',120], 
      ['RD-2','b',125], 
      ['RD-2','c',127], 
      ['RD-3','a',120], 
      ['RD-3','b',140], 
      ['RD-5','a',120]] 

如果每个子列表的第一个元素相同,我想在列表中创建单独的子列表。输出应该如下所示

finallist=[ 
           [['RD-2','a',120],['RD-2','b',125],['RD-2','c',127]],    
           [['RD-3','a',120],['RD-3','b',140]], 
           ['RD-5','a',120]] 

我尝试在 forloop 中使用 if 条件,但它不起作用。 帮帮我

请您参考如下方法:

使用 itertools.groupby

例如:

from itertools import groupby 
 
lst=[['RD-2','a',120],['RD-2','b',125],['RD-2','c',127],['RD-3','a',120],['RD-3','b',140],['RD-5','a',120]] 
 
res = [list(v) for i, v in groupby(lst, lambda x: x[0])]   #GroupBy first element.  
print(res) 

输出:

[[['RD-2', 'a', 120], ['RD-2', 'b', 125], ['RD-2', 'c', 127]], [['RD-3', 'a', 120], ['RD-3', 'b', 140]], [['RD-5', 'a', 120]]]