Python中的元组列表按其中一个值排序

时间:2015-07-30 18:17:44

标签: python list sorting duplicates tuples

我有很多这样的元组列表:

[(169, 8), (170, 1), (170, 4), (170, 8), (171, 8), (172, 8), (173, 8), (174, 8), (175, 6), (175, 8), (176, 6), (176, 8), (177, 6), (177, 8), (178, 6), (178, 8), (179, 6), (179, 8), (180, 1), (180, 6), (180, 8), (181, 6), (181, 8), (183, 1), (183, 4), (183, 6), (183, 8), (184, 6)..]

我需要的是通过选择最高的第二个值来摆脱第一个值的重复,如下所示:

[(169, 8), (170, 8), (171, 8), (172, 8), (173, 8), (174, 8), (175, 8), (176, 8),  (177, 8), (178, 8), (179, 8), (180, 8), (181, 8), (183, 1), (183, 8), (184, 6)..]

8并不总是列表中的最高值。

1 个答案:

答案 0 :(得分:1)

以下应该可以解决问题:

l = [(169, 8), (170, 1), (170, 4), (170, 8), (171, 8), (172, 8)]
print dict(sorted(l)).items()

结果:

[(169, 8), (170, 8), (171, 8), (172, 8)]

首先要对列表进行排序,然后根据排序的元组创建字典。字典的关键是第一项。由于排序顺序,最高的第二个值将替换相同键的任何其他值。然后使用items我们将结果字典再次转换为元组。