3
statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))

最大から最小の整数でソートしたい。この場合は 5 と 66 です。しかし、機能していないようです。

4

8 に答える 8

7

この関数は新しいsortedリストを返すため、関数の結果を次のように割り当てる必要があります。

new_list = sorted(statlist, key=lambda x: int(x[1])) 
于 2009-11-29T13:24:08.457 に答える
7

.sortその場での並べ替えには次の方法を使用します。

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))

を使用したい場合はsorted、変数を再割り当てします。

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))

降順で並べ替えるには、次を使用しますreverse

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)

itemgetter次に、の代わりに使用することをお勧めしますlambda

import operator
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=operator.itemgetter(1), reverse=True)
于 2009-11-29T13:27:22.783 に答える
3

.sort 関数にパス、キー、およびリバースを実行できます

>>> x.sort(key=lambda x:x[1],reverse=True)
>>> x
[('bzs', 66, 1), ('abc', 5, 1)]
>>>
于 2009-11-29T13:25:08.033 に答える
3

インプレースソート用

statlist.sort(key=lambda x: x[1])

ソートされたデータを使用して、他のリストを作成するため

otherlist = sorted( statlist, key=lambda x: x[1] )
于 2009-11-29T13:27:41.233 に答える
2
from operator import itemgetter
statlist = [('abc',5,1), ('bzs',66,1), ... ]

# statlist.sort modifiest the statlist, sorted returns a new one
# reverse puts the largest items to the front
statlist.sort(key=itemgetter(1), reverse=True)
于 2009-11-29T13:27:40.193 に答える
1

sorted() は「ソート関数のように」機能すると考えていたという alex のコメントに応えて:

「ソート機能のように」機能した場合、ライブラリに入れられた可能性は低いです。

いずれにせよ、ソート機能はありません...リストオブジェクトのソートメソッドを参照します。

対話型インタープリターを使用した簡単なデモ:

>>> alist = [3, 2, 1]; x = alist.sort(); print x; print alist
None
[1, 2, 3]
>>> alist = [3, 2, 1]; x = sorted(alist); print x; print alist
[1, 2, 3]
[3, 2, 1]

ヒントは次のとおりです。パターンと類似点を探しますが、直感的な推測を常に確認してください。これらのアイデアをreverseおよびに適用することをお勧めしますreversed

于 2009-11-30T04:21:30.990 に答える
0
>>> s = [('xyz', 8, 1), ('abc',5,1), ('bzs',66,1) ]
>>> s = sorted(s, key=lambda x: int(x[1]))
>>> s.reverse()
>>> print s
[('bzs', 66, 1), ('xyz', 8, 1), ('abc', 5, 1)]
于 2009-11-29T13:26:54.667 に答える
0

ねえ、配列に何かを保存するときはいつでも、順序を気にする傾向はありません。最後にsorted()、たとえば次のように使用しstatlist = sorted(statlist)ます。最大から最小にしたい場合は、これが最大から最小statlist = sorted(statlist, reverse = True)にする簡単な方法です!

これを使用したコード例 (抜粋)

    while i <= math.sqrt(intnum):
        if (intnum % i) == 0:
            numbers.insert(0,i)
            numbers.insert(0,int(intnum/i))
            print(i,":", int(intnum/i))
        i += 1
    numbers = sorted(numbers, reverse = True)
于 2014-04-27T13:22:49.963 に答える