スクリーン名が示すように、私は Python を初めて使用します。タプルのリストをソートしようとしていて、リスト内の (x,y) ペアを考えていて、問題が発生しました。私の目標は、タプルのリストを x 変数で主に昇順でソートすることですが、次にソートします
HowToSort の wiki ( http://wiki.python.org/moin/HowTo/Sorting/ ) を調べて、オペレーターモジュールとitemgetter関数をキーとして試してみようと思いました。
単純な sorted() 関数でタプルをうまくソートできますが、1 つのインデックスを昇順で、もう 1 つを昇順で並べ替えたい場合、私は迷ってしまいます。コードは次のとおりです。
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) ペアで 2 つの並べ替えを行う方法についてのアイデアはありますか? 私はラムダソリューションを避けたいと思っていますが、それがどこに向かっていると確信しています。ありがとう。