久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 文炳春秋 2020-10-16

我們知道 Python 的內(nèi)置 dictionary 數(shù)據(jù)類型是無序的,,通過 key 來獲取對(duì)應(yīng)的 value,。可是有時(shí)我們需要對(duì) dictionary 中的 item 進(jìn)行排序輸出,,可能根據(jù) key,,也可能根據(jù) value 來排。到底有多少種方法可以實(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ù),,用來選取參與比較的元素。

  • reverse 則是用來指定排序是倒序還是順序,,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ù)沒有提供 key 參數(shù),,但是提供了 cmp 參數(shù)來讓用戶指定比較函數(shù)。此方法在其他語(yǔ)言中也普遍存在,。

在 python2.x 中 cmp 參數(shù)指定的函數(shù)用來進(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)論公約

    類似文章 更多