python-3.x - 如何排序和删除具有相同第一个元素的元组并仅保留第一次出现
问题描述
支持我们有一个元组列表 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)
. 但是,这只会删除所有元组的重复项,但我还想删除具有相同第一个元素并且只保留第一次出现的元组的重复项。谢谢你。
解决方案
可以在以相反的顺序喂它的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)]
推荐阅读
- import - Manual function module transport into another system existing function group?
- ruby-on-rails - How to get next n records in ruby?
- javascript - put a component in an array
- php - PHP shell_exec System.OutOfMemoryException
- reactjs - fetch only returning results on second execution
- intersection - convert qgis feature to layer in qgis with python
- wordpress - How to disable email verification? (Wordpress)
- ffmpeg - 在ffmpeg的concat文件中使用带有连续点的路径时出错
- python - 无法将枕头图像列表保存为 PDF?
- ubuntu - ubuntu终端中任何文件的空白处和行中出现黄线