我得到的样本输入为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,)。
答案 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)])