我想对两个列表进行排序,两个列表中的元素是成对的。
我想按这些对中的第二个元素对列表进行排序。
例如,如果我有
a_list = [[51132, 55274, 58132], [190, 140, 180]]
想要
sorted_list = [[55274, 58132, 51132], [140, 180, 190]]
有比Python2.7中的以下方法更简单的方法吗?
from operator import itemgetter
sorted_list = map(list, zip(*sorted(map(list,zip(*a_list)), key=itemgetter(1))))
最好的问候,Øystein
我有点不愿意将其发布为答案,但是为什么不呢?
不,没有简单的方法可以在Python中实现排序-除了可以删除内部内容之外map
:
>>> map(list, zip(*sorted(zip(*a_list), key=itemgetter(1))))
[[55274, 58132, 51132], [140, 180, 190]]
这似乎有点起初曲(虽然不如与附加map
),但实际上它是完全清楚的:你压缩列表,排序由第二牙齿和拉链回来。每个了解Python的人都应该了解代码的功能。
如果您想使其更加清晰,可以添加一行注释来描述排序的作用,或者将其包装在具有描述性名称和相同或更广泛注释的函数中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句