如何对具有相同名称的列表元素进行分组?

2024-04-26 04:54:57 发布

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

我正在尝试重新组合具有相同名称的元素,我尝试了以下代码:

l=[0,1,1,1,3,3]
lo=[[2,1,5],[2,8,9],[5,9,7],[4,6,9],[7,9,5],[2,5,6]]
ss=[]
for i in range(0,6):
    for j in range(i+1,6):
        if l[i]==l[j]:
            b=[lo[i],lo[j]]
            print(b)
            ss.append(b)
            print('////',ss)
           break

        else:
            b=[lo[i]]
            print('****',b)
            ss.append(b)
            print('/*/*/',ss)
            break

print('ss:',ss)

我预料到结果

ss: [[2,1,5],[[2,8,9],[5,9,7],[4,6,9]],[[7,9,5],[2,5,6]]] 

但它给出了:

ss: [[[2, 1, 5]], [[2, 8, 9], [5, 9, 7]], [[5, 9, 7], [4, 6, 9]], [[4, 6, 9]], [[7, 9, 5], [2, 5, 6]]]

Tags: 代码in名称元素loforifrange
1条回答
网友
1楼 · 发布于 2024-04-26 04:54:57

您可以将这两个列表zip放入一个元组序列中,以便使用itertools.groupby根据l中的值对元组进行分组:

from itertools import groupby
[[s for _, s in g] for _, g in groupby(zip(l, lo), lambda t: t[0])]

这将返回:

[[[2, 1, 5]], [[2, 8, 9], [5, 9, 7], [4, 6, 9]], [[7, 9, 5], [2, 5, 6]]]

相关问题 更多 >