Python中Sorted()函數(shù)的key參數(shù)使用方法詳解
一、sorted函數(shù)
sorted() 函數(shù)是 Python 內(nèi)置的一種排序函數(shù),它可以對(duì)序列進(jìn)行排序,并且返回排序后的結(jié)果。該函數(shù)的語(yǔ)法格式如下:
sorted(iterable, /, *, key=None, reverse=False)
其中,iterable 是待排序的元素集合,可以是列表、元組、字典等可迭代對(duì)象。key 和 reverse 是可選參數(shù)。
- key 參數(shù)用于指定一個(gè)函數(shù),該函數(shù)將應(yīng)用于待排序的每個(gè)元素上,獲取用于排序的關(guān)鍵字(key)。具體來(lái)說(shuō),key 參數(shù)需要傳遞一個(gè)函數(shù),它會(huì)取待排序元素作為輸入,并返回一個(gè)用于定制排序的關(guān)鍵字。默認(rèn)為 None,表示直接比較待排序元素本身進(jìn)行排序。
- reverse 參數(shù)是一個(gè)布爾值,用于決定排序順序。默認(rèn)值為 False,表示升序排序。如果將該參數(shù)指定為 True,則表示降序排序。
下面舉一個(gè)例子,說(shuō)明在實(shí)際應(yīng)用中 sorted() 函數(shù)的用法:
from collections import namedtuple # 構(gòu)造一個(gè)命名元組類型 Person = namedtuple('Person', ['name', 'age', 'gender']) # 創(chuàng)建一個(gè) Person 的列表 people = [ Person('Alice', 22, 'F'), Person('Bob', 35, 'M'), Person('Charlie', 28, 'M'), Person('David', 28, 'M'), Person('Eva', 21, 'F') ] # 按年齡進(jìn)行升序排序 people_by_age = sorted(people, key=lambda p: p.age) print(people_by_age) # 按姓名的首字母進(jìn)行降序排序 people_by_first_letter = sorted(people, key=lambda p: p.name[0], reverse=True) print(people_by_first_letter) ===結(jié)果=== [Person(name='Eva', age=21, gender='F'), Person(name='Alice', age=22, gender='F'), Person(name='Charlie', age=28, gender='M'), Person(name='David', age=28, gender='M'), Person(name='Bob', age=35, gender='M')] [Person(name='Eva', age=21, gender='F'), Person(name='David', age=28, gender='M'), Person(name='Charlie', age=28, gender='M'), Person(name='Bob', age=35, gender='M'), Person(name='Alice', age=22, gender='F')]
在上述代碼中,我們使用了 namedtuple 來(lái)定義了一個(gè)名為 Person 的命名元組類型,并創(chuàng)建了一個(gè) people 列表來(lái)保存多個(gè) Person 的實(shí)例。
我們使用 sorted() 函數(shù)對(duì) people 列表進(jìn)行了升序和降序排序。升序排序是通過(guò) key 參數(shù)指定了按照 Person 對(duì)象的 age 屬性進(jìn)行排序,而降序排序是通過(guò) key 參數(shù)指定了按照 Person 對(duì)象的 name 屬性的第一個(gè)字母的 ASCII 值進(jìn)行排序。
當(dāng)需要對(duì)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)進(jìn)行排序時(shí),我們經(jīng)常需要自定義排序規(guī)則。此時(shí),我們可以通過(guò)將自定義的函數(shù)作為 key 參數(shù)賦值,來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)結(jié)構(gòu)按照任意排序規(guī)則進(jìn)行排序。
下面就給出一個(gè)示例,其中 key 參數(shù)通過(guò)一個(gè)自定義的函數(shù)實(shí)現(xiàn)對(duì)一個(gè)包含學(xué)生信息的列表進(jìn)行按照成績(jī)降序排序:
# 定義一個(gè)包含學(xué)生信息的列表 students = [('Alice', 95), ('Bob', 83), ('Charlie', 72), ('David', 90), ('Eva', 87)] # 使用一個(gè)自定義的函數(shù),對(duì)學(xué)生信息按照成績(jī)降序排序 def sort_by_score(student): return student[1] students_sorted_by_score = sorted(students, key=sort_by_score, reverse=True) print(students_sorted_by_score) ===輸出結(jié)果如下所示:=== [('Alice', 95), ('David', 90), ('Eva', 87), ('Bob', 83), ('Charlie', 72)]
在上述代碼中,我們首先定義了一個(gè)包含多個(gè)學(xué)生信息的列表 students,每個(gè)學(xué)生信息包含了姓名和成績(jī)兩個(gè)元素。接下來(lái),我們定義了一個(gè)自定義函數(shù) sort_by_score,該函數(shù)的輸入?yún)?shù)是一個(gè)學(xué)生信息,我們將該學(xué)生信息的成績(jī)作為排序的關(guān)鍵字。
通過(guò)將 sort_by_score 函數(shù)賦值給 sorted() 函數(shù)中的 key 參數(shù),我們就實(shí)現(xiàn)了對(duì)學(xué)生列表按照學(xué)生成績(jī)進(jìn)行降序排序的目的。
總結(jié)
到此這篇關(guān)于Python中Sorted()函數(shù)的key參數(shù)使用方法的文章就介紹到這了,更多相關(guān)Python Sorted()函數(shù)key參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+fuzzywuzzy計(jì)算兩個(gè)字符串之間的相似度
fuzzywuzzy?可以計(jì)算兩個(gè)字符串之間的相似度,它依據(jù)?Levenshtein?Distance?算法來(lái)進(jìn)行計(jì)算,該算法又叫?Edit?Distance?算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型
這篇文章主要介紹了Python基礎(chǔ)知識(shí)+結(jié)構(gòu)+數(shù)據(jù)類型,文章基于python基礎(chǔ)知識(shí)圍繞主題展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05如何解決Python中tqdm和zip一起用進(jìn)度條不顯示問(wèn)題
這篇文章主要介紹了如何解決Python中tqdm和zip一起用進(jìn)度條不顯示問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python數(shù)據(jù)結(jié)構(gòu)之鏈表的實(shí)例講解
下面小編就為大家?guī)?lái)一篇python數(shù)據(jù)結(jié)構(gòu)之鏈表的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07PyCharm使用matplotlib報(bào)MatplotlibDeprecationWarning問(wèn)題解決辦法
這篇文章主要給大家介紹了關(guān)于PyCharm使用matplotlib報(bào)MatplotlibDeprecationWarning問(wèn)題解決的相關(guān)資料,主要是 matplotlib版本過(guò)高導(dǎo)致的,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06python使用pyhook監(jiān)控鍵盤并實(shí)現(xiàn)切換歌曲的功能
這篇文章主要介紹了python使用pyhook監(jiān)控鍵盤并實(shí)現(xiàn)切換歌曲的功能,非常酷炫的一個(gè)小程序,可以讓你在游戲時(shí)避免切出游戲直接換歌,需要的朋友可以參考下2014-07-07python編程實(shí)現(xiàn)清理微信重復(fù)緩存文件
這篇文章主要為大家介紹了使用python編程來(lái)實(shí)現(xiàn)清理微信重復(fù)緩存文件的示例代碼過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11