sorted 函数排序

Posted yinziming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sorted 函数排序相关的知识,希望对你有一定的参考价值。

1,sorted 函数
sorted 函数语法:sorted (iterable,key,reverse),一共有iterable,key,reverse这三个参数。

iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等;

key是一个函数,用来选取参与比较的元素,

reverse则是用来指定排序是倒序还是顺序,

reverse=True则是倒序(从大到小),reverse=false则是顺序(从小到大),

默认是reverse=false。

 

2,按照key排序
要对字典按照key排序,可以直接调用sorted函数。

>>> a_dic = {"老张":38, "老齐":42, "老孙":29, "老刘":24}
>>> sorted(a_dic.keys())
[‘老刘‘, ‘老孙‘, ‘老张‘, ‘老齐‘]
>>> sorted(a_dic.keys(),reverse = True)
[‘老齐‘, ‘老张‘, ‘老孙‘, ‘老刘‘]
>>> sorted(a_dic.values())
[24, 29, 38, 42]
>>>

直接对a_dic.keys 字典中的键或值排序。

3,这样排序后,失去了原来的对应关系,如果我想知道谁的年龄最大,

希望排序后年龄随着姓名一起变动,则需要lambda函数。

>>> a_dic  =   {‘老张‘: 38, ‘老齐‘: 42, ‘老孙‘: 29, ‘老刘‘: 24}
>>> sorted(a_dic.items(), key = lambda x :x[1], reverse = True)
[(‘老齐‘, 42), (‘老张‘, 38), (‘老孙‘, 29), (‘老刘‘, 24)]
>>>

a_dic.items() 输出为元组(key,value)形式,sorted中的关键字key=lambda x : x[1]

表示将元组的第2列进行排序(若对第1列排序则取x[0],此处x表示变量名,可以任取)

方法二:把字典转化为列表进行排序

>>> a_dic = {"老张":38,  "老齐":42,  "老孙":29, "老刘":24}

>>> name_age = list(a_dic.items())

>>> sorted(name_age, key = lambda s : s[1 ], reverse = True)
[(‘老齐‘, 42), (‘老张‘, 38), (‘老孙‘, 29), (‘老刘‘, 24)]
>>>

 

>>> a_dic = {"老张":38, "老齐":42, "老孙":29, "老刘":24}
>>> name_age = list(a_dic.items())
>>> nage = sorted(name_age, key = lambda s : s[1 ], reverse = True)
>>> name, age = nage[0]
>>> print(name,age)
老齐 42
>>>

a_dic = {"老张":35, "老齐":43, "老孙":19, "老刘":27}
name_age2 = list(a_dic.items())
name_age2.sort(key = lambda s : s[1], reverse = True )
name, age = name_age2[0]
print(name, age)

老齐 43

 

以上是关于sorted 函数排序的主要内容,如果未能解决你的问题,请参考以下文章

编写一个sort函数,它用于对任何类型的数组进行排序

sort函数能对结构体进行排序吗?

sorted排序函数

c++ sort 函数能对类或者结构体进行排序吗

函数式编程--高阶函数--sorted

设计一个一维数组的排序函数p_sort,并调用它对10个整数进行排序。p_sort函数原型如下: