一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

利用 python 的 sorted 函數(shù)對(duì)字典按 key 排序和按 value 排序

 文炳春秋 2020-10-16

我們知道 Python 的內(nèi)置 dictionary 數(shù)據(jù)類型是無(wú)序的,通過(guò) key 來(lái)獲取對(duì)應(yīng)的 value??墒怯袝r(shí)我們需要對(duì) dictionary 中的 item 進(jìn)行排序輸出,可能根據(jù) key,也可能根據(jù) value 來(lái)排。到底有多少種方法可以實(shí)現(xiàn)對(duì) dictionary 的內(nèi)容進(jìn)行排序輸出呢?下面摘取了使用 sorted 函數(shù)實(shí)現(xiàn)對(duì) dictionary 的內(nèi)容進(jìn)行排序輸出一些精彩的解決辦法。

1. sorted函數(shù)按key值對(duì)字典排序

先基本介紹一下 sorted 函數(shù),sorted(iterable,key,reverse),sorted一共有 iterable,key,reverse 這三個(gè)參數(shù)。

  • 其中 iterable 表示可以迭代的對(duì)象,例如可以是 dict.items()、dict.keys()等。

  • key 是一個(gè)函數(shù),用來(lái)選取參與比較的元素。

  • reverse 則是用來(lái)指定排序是倒序還是順序,reverse=true 則是倒序,reverse=false 時(shí)則是順序,默認(rèn)時(shí) reverse=false。

要按key值對(duì)字典排序,則可以使用如下語(yǔ)句:

In [1]: d = {"lilee":25, "wangyuan":21, "liquan":32, "zhangsan":18, "lisi":28}In [2]: sorted(d.keys())Out[2]: ['lilee', 'liquan', 'lisi', 'wangyuan', 'zhangsan']

直接使用 sorted(d.keys()) 就能按 key 值對(duì)字典排序,這里是按照順序?qū)?key 值排序的,如果想按照倒序排序的話,則只要將 reverse 置為 true 即可。

2. sorted函數(shù)按value值對(duì)字典排序

在 python2.4 前,sorted() 和 list.sort() 函數(shù)沒(méi)有提供 key 參數(shù),但是提供了 cmp 參數(shù)來(lái)讓用戶指定比較函數(shù)。此方法在其他語(yǔ)言中也普遍存在。

在 python2.x 中 cmp 參數(shù)指定的函數(shù)用來(lái)進(jìn)行元素間的比較。此函數(shù)需要 2 個(gè)參數(shù),然后返回負(fù)數(shù)表示小于,0 表示等于,正數(shù)表示大于。

在 python3.0 中,cmp 參數(shù)被徹底的移除了,從而簡(jiǎn)化和統(tǒng)一語(yǔ)言,減少了高級(jí)比較和 __cmp__ 方法的沖突。

  • cmp 參數(shù)(python3 中已經(jīng)被移除,不推薦)

In [3]: sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)Out[3]: 
[('liquan', 32), ('lisi', 28), ('lilee', 25), ('wangyuan', 21), ('zhangsan', 18)]
  • key 參數(shù)(推薦)

In [4]: sorted(d.items(), key=lambda item:item[1], reverse=True)Out[4]: 
[('liquan', 32), ('lisi', 28), ('lilee', 25), ('wangyuan', 21), ('zhangsan', 18)]
  1. 這里的 d.items() 實(shí)際上是將 d 轉(zhuǎn)換為可迭代對(duì)象,迭代對(duì)象的元素為 ('liquan', 32)、('lisi', 28)、......、('zhangsan', 18)。

  2. items() 方法將字典的元素轉(zhuǎn)化為了元組,而這里 key 參數(shù)對(duì)應(yīng)的 lambda 表達(dá)式的意思則是選取元組中的第二個(gè)元素作為比較參數(shù)(如果寫作 key=lambda item:item[0] 的話則是選取第一個(gè)元素作為比較對(duì)象,也就是 key 值作為比較對(duì)象。lambda x:y 中 x 表示輸出參數(shù),y 表示 lambda 函數(shù)的返回值),所以采用這種方法可以對(duì)字典的 value 進(jìn)行排序。

  3. 注意排序后的返回值是一個(gè) list,而原字典中的名值對(duì)被轉(zhuǎn)換為了 list 中的元組。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲高清一区二区高清| 色婷婷成人精品综合一区| 欧美在线观看视频免费不卡| 亚洲欧美日本国产不卡| 99久久国产精品亚洲| 福利在线午夜绝顶三级| 国产午夜在线精品视频| 不卡一区二区高清视频| 日本精品免费在线观看| 日韩欧美91在线视频| 日韩综合国产欧美一区| 日本成人三级在线播放| 国产精品一级香蕉一区| 色欧美一区二区三区在线| 国产欧美性成人精品午夜| 熟妇人妻av中文字幕老熟妇| 精品一区二区三区中文字幕| 高清亚洲精品中文字幕乱码| 久久永久免费一区二区| 欧美丰满人妻少妇精品| 中文字幕佐山爱一区二区免费| 国产av一区二区三区麻豆| 欧美成人高清在线播放| 黑鬼糟蹋少妇资源在线观看| 欧美日韩三区在线观看| 日韩中文字幕狠狠人妻| 99秋霞在线观看视频| 国产目拍亚洲精品区一区| 色综合久久中文综合网| 黄色av尤物白丝在线播放网址| 日本精品理论在线观看| 国产午夜福利不卡片在线观看| 国产欧美精品对白性色| 亚洲少妇一区二区三区懂色| 日韩不卡一区二区三区色图| 最近最新中文字幕免费| 操白丝女孩在线观看免费高清| 色婷婷日本视频在线观看| 人妻内射在线二区一区| 伊人久久青草地综合婷婷| 九九热在线免费在线观看|