删除嵌套列表中的重复项(不删除子列表中重复的元素)

2024-09-29 17:22:07 发布

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

我试图从如下所示的嵌套列表中删除重复的子列表:

result_set = [
    ['MEMS', 'MEMS', 'MEMS', 'MEMS'],
    ['Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics'],
    ['Microfabrication', 'Microfabrication', 'Microfabrication', 'Clean-Room Microfabrication', 'Microfabrication', 'Microfabrication'],
    ['Photolithography', 'Photolithography', 'Lithography', 'Photolithography'],
    ['MEMS', 'MEMS', 'MEMS', 'MEMS']
    ]

我想要的输出如下:

^{pr2}$

请注意,基本上最后一个元素(“MEMS”、“MEMS”、“MEMS”、“MEMS”)已不复存在。Similar questions已被询问,我从中改编了以下代码:

^{3}$

我的问题是我得到了以下输出:

 result_set = [['MEMS'], ['Microfluidics'], ['Microfabrication', 'Clean-Room Microfabrication'], ['Photolithography', 'Lithography']]

请注意,它还删除了子列表中重复的元素。我不想这样,因为我的目标是绘制一个柱状图。例如,MEMS有4种情况。因此,我想跟踪每个子列表最初拥有的元素数量。在


Tags: 代码clean元素列表resultroomquestionssimilar
2条回答

如果顺序无关紧要,可以使用set

final_data = list(map(list, set(map(tuple, result_set))))

输出:

^{pr2}$

如果顺序很重要,您可以尝试:

final_data = []
for result in result_set:
    if result not in final_data:
         final_data.append(result)

输出:

[['MEMS', 'MEMS', 'MEMS', 'MEMS'], ['Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics', 'Microfluidics'], ['Microfabrication', 'Microfabrication', 'Microfabrication', 'Clean-Room Microfabrication', 'Microfabrication', 'Microfabrication'], ['Photolithography', 'Photolithography', 'Lithography', 'Photolithography']]

对列表进行排序,然后使用itertools.groupby()生成的键生成一个新列表。在

import itertools
result_set.sort()
new_set = [k for k,g in itertools.groupby(result_set)]

相关问题 更多 >

    热门问题