📌  相关文章
📜  Python|从嵌套列表中删除重复项

📅  最后修改于: 2022-05-13 01:54:48.194000             🧑  作者: Mango

Python|从嵌套列表中删除重复项

最近多次删除重复的任务,但有时当我们处理复杂的数据结构时,在那些情况下,我们需要不同的技术来处理这类问题。让我们讨论一些可以实现此任务的方法。

方法 #1:使用sorted() + set()
可以使用上述功能解决此特定问题。这里的想法是对子列表进行排序,然后使用删除重复项的集合操作删除相似的元素。

# Python3 code to demonstrate
# removing duplicate sublist 
# using set() + sorted()
  
# initializing list
test_list = [[1, 0, -1], [-1, 0, 1], [-1, 0, 1],
                           [1, 2, 3], [3, 4, 1]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using set() + sorted()
# removing duplicate sublist
res = list(set(tuple(sorted(sub)) for sub in test_list))
  
# print result
print("The list after duplicate removal : " + str(res))  
输出 :
The original list : [[1, 0, -1], [-1, 0, 1], [-1, 0, 1], [1, 2, 3], [3, 4, 1]]
The list after duplicate removal : [(-1, 0, 1), (1, 3, 4), (1, 2, 3)]

方法 #2:使用set() + map() + sorted()
上述方法中列表推导执行的任务可以使用 map函数进行修改,使用 lambda 函数将逻辑扩展到每个子列表。

# Python3 code to demonstrate
# removing duplicate sublist 
# using set() + map() + sorted()
  
# initializing list
test_list = [[1, 0, -1], [-1, 0, 1], [-1, 0, 1],
                           [1, 2, 3], [3, 4, 1]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using set() + map() + sorted()
# removing duplicate sublist
res = list(set(map(lambda i: tuple(sorted(i)), test_list)))
  
# print result
print("The list after duplicate removal : " + str(res))
输出 :
The original list : [[1, 0, -1], [-1, 0, 1], [-1, 0, 1], [1, 2, 3], [3, 4, 1]]
The list after duplicate removal : [(-1, 0, 1), (1, 3, 4), (1, 2, 3)]