从元组列表中获取唯一元素的问题

时间:2019-06-04 06:05:39

标签: python python-2.7

我得到的样本输入为a=[(1,2),(2,3),(1,1),(2,1)],预期的输出为a=[(1,2),(2,3),(1,1)]

此处,(2,1)已删除,因为已经有相同的组合对(1,2)。我尝试使用下面的代码删除重复的配对

map(tuple, set(frozenset(x) for x in a))

但是,输出为[(1, 2), (2, 3), (1,)]。如何将(1,1)对作为(1,1)而不是(1,)。

2 个答案:

答案 0 :(得分:3)

您可以使用字典而不是集合来将冻结集映射到原始元组值。以列表的相反顺序构建dict,以便复制更靠近前端的元组具有优先权:

{frozenset(x): x for x in reversed(a)}.values()

这将返回:

[(1, 2), (2, 3), (1, 1)]

答案 1 :(得分:1)

这是使用sorted

的一种方法

例如:

a=[(1,2),(2,3),(1,1),(2,1)]
print set([tuple(sorted(i)) for i in a])

输出:

set([(1, 2), (2, 3), (1, 1)])