Python:如何在列表中找到相同的值并将它们分组到新列表中?

2024-10-03 04:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在这样的列表中,我有几个列表:

data_list = [ ['W_921', 'OSA15', 'name1', 'name2'], 
              ['W_818', 'OSA15', 'name1', 'name2'], 
              ['W_936', 'LSG2', 'name4', 'name5'], 
              ['W_936', 'OSA15', 'name1', 'name2'], 
              ['W_703', 'EB2', 'name6', 'name7'] ]

我需要的是对列表的第二个元素进行分组,并创建一个新列表,如下所示:

grouped_data_list = [ ['OSA15', 'name1', 'name2', 'W_921, W_818, W_936'], 
                     ['LSG2', 'name4', 'name5', 'W_936'], 
                     ['EB2', 'name6', 'name7', 'W_703'] ]

我应该更好地使用字典来实现这一点吗?我看了一下itertools,但找不到达到预期效果的方法


Tags: 元素列表data字典listname1groupedname2
1条回答
网友
1楼 · 发布于 2024-10-03 04:38:15

如果您可以使用pandas,那么使用pandas.DataFrame.groupby,您可以实现以下目标:

>>> df = pd.DataFrame(data_list)
>>> ( df.groupby(list(df.columns[1:]), sort=False)
        .agg(', '.join).reset_index().to_numpy().tolist() )

[['OSA15', 'name1', 'name2', 'W_921, W_818, W_936'],
 ['LSG2', 'name4', 'name5', 'W_936'],
 ['EB2', 'name6', 'name7', 'W_703']]

相关问题 更多 >