[英]remove duplicates from a multidimensional list (python)
我正在嘗試從多維列表中刪除重復的項目。 我的目標是刪除列表中相同的項目。
例如:清單2,清單6和清單7包含汽車Bentley。 我想從清單2中刪除那輛車。
我該如何完成?
下面的代碼僅在我傳遞包含重復條目的單個列表時才有效,但是我需要對多維列表進行重復數據刪除。
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']
]
重復數據刪除后我想要的輸出如下所示。 此多維列表中沒有列表包含重復的條目。
[
['Acura', 'Alfa Romeo', 'Aston Martin', 'Audi']
['Bentley', 'BMW', 'Bugatti', 'Buick'],
['Cadillac', 'Chrysler', 'Citroen'],
['Dodge', 'Ferrari', 'Fiat', 'Ford'],
['Geely', 'Honda', 'Hyundai', 'Infiniti'],
['Bentley', 'Hyundai', 'Lamborghini'
['Koenigsegg', 'Maserati']
]
您可以這樣做:
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
輸出量
[
['Acura', 'Alfa Romeo', 'Aston Martin', 'Audi'],
['Bentley', 'BMW', 'Bugatti', 'Buick'],
['Cadillac', 'Chrysler', 'Citroen'],
['Dodge', 'Ferrari', 'Fiat', 'Ford'],
['Geely', 'Honda', 'Hyundai', 'Infiniti'],
['Lamborghini'],
['Koenigsegg', 'Maserati']
]
您可以將備忘錄用於此類目的。 將每個元素的第一次出現存儲在列表中 ,比如說列表F。 如果元素不在F中,則它是唯一的 。 將唯一元素存儲在F中,然后重復該過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.