美文网首页程序园
一个Java 程序员的python学习之路10- sorted函

一个Java 程序员的python学习之路10- sorted函

作者: 赵阳_c149 | 来源:发表于2019-12-28 19:47 被阅读0次

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 is None (compare the elements directly).
reverse is a boolean value. If set to True, 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

相关文章

网友评论

    本文标题:一个Java 程序员的python学习之路10- sorted函

    本文链接:https://www.haomeiwen.com/subject/cggsoctx.html