📜  Python|从列表中提取唯一元组,顺序无关

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

Python|从列表中提取唯一元组,顺序无关

有时,在处理数据时,我们可能会遇到需要检查类似记录并根除它们的问题。当元素被排序时,这种情况之前已经讨论过。但有时,我们可能不得不忽略顺序,并且必须将其删除,以防出现类似的元素。让我们讨论可以执行此任务的某些方式。

方法 #1:使用列表理解 + set()
上述功能的组合可以结合起来执行此特定任务。在此,我们检查每一对并添加到一个集合以供参考以检查它是否以前存在并添加它是否是新的。

# Python3 code to demonstrate working of
# Extract unique tuples from list(Order Irrespective)
# using list comprehension + set()
  
# initialize tuples list 
test_list = [(1, 3), (4, 5), (3, 1), (1, 10), (5, 4)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Extract unique tuples from list(Order Irrespective)
# using list comprehension + set()
res = set() 
temp = [res.add((a, b)) for (a, b) in test_list 
              if (a, b) and (b, a) not in res]
  
# printing result
print("The list after duplicated removal : " + str(list(res)))
输出 :
The original list : [(1, 3), (4, 5), (3, 1), (1, 10), (5, 4)]
The list after duplicated removal : [(4, 5), (1, 3), (1, 10)]

方法#2:使用frozenset()
执行此特定任务的另一种方法是使用frozenset() 。此函数在内部消除了类似元素,而与顺序无关。

# Python3 code to demonstrate working of
# Extract unique tuples from list(Order Irrespective)
# using frozenset()
  
# initialize tuples list 
test_list = [(1, 3), (4, 5), (3, 1), (1, 10), (5, 4)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Extract unique tuples from list(Order Irrespective)
# using frozenset()
res = set(tuple(frozenset(sub)) for sub in set(test_list))
  
# printing result
print("The list after duplicated removal : " + str(list(res)))
输出 :
The original list : [(1, 3), (4, 5), (3, 1), (1, 10), (5, 4)]
The list after duplicated removal : [(4, 5), (1, 3), (1, 10)]