python官方文档对sorted方法的说明
在python中,经常需要对包括字典在内的集合类进行排序。可以用buildin的sorted【1】方法实现。对于sorted方法,python官方文档中有以下说明:
sorted(iterable, *, key=None, reverse=False)
Return a new sorted list from the items in iterable.
从iterable中返回一个排序的list。
Has two optional arguments which must be specified as keyword arguments.
key specifies a function of one argument that is used to extract a comparison key from each element in iterable (for example,key=str.lower
). The default value isNone
(compare the elements directly).
reverse is a boolean value. If set toTrue
, then the list elements are sorted as if each comparison were reversed.
该方法有两个可选参数必须作为keyword参数传入。
- key指定了用于从iterable中的每个元素中提取比较值的函数,这个函数只有一个参数,例如
key=str.lower
。其默认为None,意味着将元素本身作为比较值。 - reverse是一个boolean值。如果设置为
True
,那么将比较后的结果进行倒转。
The built-in
sorted()
function is guaranteed to be stable. A sort is stable if it guarantees not to change the relative order of elements that compare equal — this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).
build-in的sorted()
方法被确保是“稳定”的。一个排序是稳定的,意味着他能保证不会去改变比较结果为“相等”的元素之间的相对位置。“稳定”有助于对元素进行 “multiple passes” 排序。例如,首先按部门进行排序,之后按照工资等级进行排序。
HOW TO
Sorting基本应用
sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
对字典的key进行排序
sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
对key传入参数
sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
通常的应用模式是对复杂对象按照其某一个索引所指向的对象排序。
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
逆序
sorted(student_tuples, key=itemgetter(2), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
按照字典的值进行排序
students = ['dave', 'john', 'jane']
newgrades = {'john': 'F', 'jane':'A', 'dave': 'C'}
sorted(students, key=newgrades.__getitem__)
['jane', 'dave', 'john']
更详细的说明可以参照python官方文档【2】。
【1】sorted
【2】Sorting HOW TO
网友评论