正如屏幕名称所证明的那样,我是 Python 新手。我试图对元组列表进行排序,在列表中考虑 (x,y) 对并遇到问题。我的目标是先按 x 变量升序对元组列表进行排序,然后再排序
我在http://wiki.python.org/moin/HowTo/Sorting/上调查了关于 HowToSort 的 wiki,并认为我会尝试将operator模块和itemgetter函数作为键。
简单的 sorted() 函数可以很好地对元组进行排序,但是当你想要一个索引升序和一个升序时,我迷路了。这是代码:
from operator import itemgetter, attrgetter
ItemList = [(1,7),(2,1),(1,5),(1,1)]
# Want list sorted with X values descending, then y values ascending
# expected [(2, 1), (1, 1), (1,5), (1, 7)]
print
print ' Input:', ItemList
print 'Output1:',sorted(ItemList, reverse = True)
print
print ' Input:', ItemList
print 'Output2:', sorted(ItemList, key = itemgetter(-0,1))
print
print ' WANTED:', '[(2, 1), (1, 1), (1,5), (1, 7)]'
具有以下输出:
Input: [(1, 7), (2, 1), (1, 5), (1, 1)]
Output1: [(2, 1), (1, 7), (1, 5), (1, 1)]
Input: [(1, 7), (2, 1), (1, 5), (1, 1)]
Output2: [(1, 1), (1, 5), (1, 7), (2, 1)]
WANTED: [(2, 1), (1, 1), (1, 5), (1, 7)]
我显然不了解 itemgetter 功能,因此我们将不胜感激。
另外,关于如何对 (x,y) 对进行两种排序的任何想法?我希望避免使用 lambda 解决方案,但我确信这就是它的发展方向。谢谢。