sorted 函数排序

2021-04-08 07:26

阅读:550

标签:list   values   items   关系   value   函数   形式   默认   12px   

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 函数排序

标签:list   values   items   关系   value   函数   形式   默认   12px   

原文地址:https://www.cnblogs.com/yinziming/p/13379381.html


评论


亲,登录后才可以留言!