首页 > 解决方案 > 如何排序和删除具有相同第一个元素的元组并仅保留第一次出现

问题描述

支持我们有一个元组列表 listeT:

ListeT=[('a', 1), ('x',1) , ('b', 1), ('b', 1),  ('a', 2),  ('a',3),  ('c', 6), ('c', 5),('e', 6),  ('d', 7),('b', 2)]` and i want to get the following result:

结果 = [('a', 1), ('x',1) , ('b', 1), ('c', 5), ('c', 6), ('e', 6) , ('d', 7)]`

1-我想根据元组的第二个元素对这个列表进行排序。2-我想删除重复项,只保留第一个元素的值相同的元组:例如,如果有 ('a', 1) 和 (a,2),我只想保留 ('a' , 1)。对于我使用的排序: res=sorted(listT, key=lambda x: x[1], reverse= True) 并且它有效。但是对于重复项,我找不到一个好的解决方案:我可以通过将列表转换为集合 ( set(listeT)) 或使用 numpy.unique(ListeT, axis=0). 但是,这只会删除所有元组的重复项,但我还想删除具有相同第一个元素并且只保留第一次出现的元组的重复项。谢谢你。

标签: python-3.xlistsortingduplicatestuples

解决方案


可以在以相反的顺序喂它的dict同时照顾它的唯一性。我不明白您是否需要外部sort,因此如果不需要,您可以将其替换为list()

sorted(dict(sorted(ListeT, key=lambda x: x[1], reverse= True)).items(), key=lambda x: x[1])

[('a', 1), ('b', 1), ('x', 1), ('c', 5), ('e', 6), ('d', 7)]

推荐阅读