34

数値のリストがある場合[4,2,5,1,3] 、最初に関数fで並べ替え、次に同じ値の数値の場合、数値fの大きさで並べ替えます。

このコードは機能していないようです。

list5 = sorted(list5)
list5 = sorted(list5, key = lambda vertex: degree(vertex)) 

最初に二次ソート: list5 は大きさに基づいてソートされます。次の一次ソート: list5 は、数値の関数に基づいてソートされます。

4

4 に答える 4

84

(firstkey, secondkey) タプルで並べ替えます。

sorted(list5, key=lambda vertex: (degree(vertex), vertex))
于 2013-04-24T13:44:18.320 に答える
5

ソートに関する Python 3 ドキュメントから

from operator import itemgetter, attrgetter
student_objects = [
    Student('john', 'A', 15),
    Student('jane', 'B', 12),
    Student('dave', 'B', 10),
]
student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]

#The operator module functions allow multiple levels of sorting. For example, to sort by grade then by age:

sorted(student_tuples, key=itemgetter(1,2))
sorted(student_objects, key=attrgetter('grade', 'age'))
于 2016-04-12T04:04:47.073 に答える
4

電話ですが、タプルでソートできます。

sorted(list5, lambda x: (degree(x),x))

必要な場合は、リバース フラグを忘れないでください。

于 2013-04-24T13:49:45.070 に答える