从python中的列表中删除重复(非精确)元组

时间:2016-06-21 19:47:59

标签: python set duplicates tuples

考虑一个元组列表: [(14,1), (10,5), (8,7), (1,14)]

我需要消除(1,14)&之一(14,1)。因此,预期结果应为[(14,1),(10,5),(8,7)][(10,5),(8,7),(1,14)]

注意:订单无关紧要。

我知道set()可以用来消除确切的重复。此外,组合也没有多大帮助,因为所有这些组合总和相同。

2 个答案:

答案 0 :(得分:3)

考虑到这种情况,改为使用一组集合是明智的。集合不允许重复,并且指定顺序无关紧要。

如果您无法控制数据的创建,而是必须从当前数据转换为此数据,则可以转换当前数据:

{frozenset(i) for i in dataset}

您必须使用frozenset,因为set不是可播放类型。这不比使用tuple更具限制性。

答案 1 :(得分:1)

对元组进行排序

data = [(14,1), (10,5), (8,7), (1,14)]
set( [ tuple(sorted(i)) for i in data])

输出:

set([(5, 10), (1, 14), (7, 8)])