从多维列表中删除重复项(python)

2024-09-27 20:17:26 发布

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

我正在尝试从多维列表中删除重复项。我的目标是删除列表中相同的项。在

例如:列表2、列表6和列表7包含宾利汽车。我想把那辆车从两张单子上去掉。在

我该怎么做?在

下面的代码只有在传入包含重复项的单个列表时才有效,但我需要对多维列表进行重复数据消除。在

cars = [
     ["Acura", "Alfa Romeo", "Aston Martin", "Audi", "Aston Martin"],
     ["Bentley", "BMW", "Bugatti", "Buick"],
     ["Cadillac", "Chrysler", "Citroen"],
     ["Dodge", "Ferrari", "Fiat", "Ford"],
     ["Geely", "Honda", "Hyundai", "Infiniti"],
     ["Alfa Romeo", "Bentley", "Hyundai", "Lamborghini"],
     ["Koenigsegg", "Bentley", "Maserati", "Lamborghini"]
    ]

def remove(duplicate):
  final_list = []
  for num in duplicate:
    if num not in final_list:
        final_list.append(num)
  return final_list


print (remove(cars))

returns:
[
 ['Acura', 'Alfa Romeo', 'Aston Martin', 'Audi','Aston Martin']
 ['Bentley', 'BMW', 'Bugatti', 'Buick'], 
 ['Cadillac', 'Chrysler', 'Citroen'], 
 ['Dodge', 'Ferrari', 'Fiat', 'Ford'], 
 ['Geely', 'Honda', 'Hyundai', 'Infiniti'], 
 ['Alfa Romeo', 'Bentley', 'Hyundai', 'Lamborghini'
 ['Koenigsegg', 'Bentley', 'Maserati', 'Lamborghini']
]

我在重复数据消除后所需的输出如下所示。此多维列表中没有包含重复项的列表。在

^{pr2}$

Tags: 数据列表carsnumlistfinalmartinaudi
2条回答

你可以使用记忆化来达到这样的目的。将每个元素的第一次出现存储在列表中,比如列表F。如果一个元素不在F中,那么它是唯一的。将唯一元素存储在F中,然后重复该过程。在

你可以这样做:

def remove(duplicate):
    final_list = []
    found = set([])
    for num in duplicate:
        lst = []
        for element in num:
            if element not in found:
                found.add(element)
                lst.append(element)
        final_list.append(lst)
    return final_list

输出

^{pr2}$

相关问题 更多 >

    热门问题