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 函数排序的主要内容,如果未能解决你的问题,请参考以下文章