利用python怎么實(shí)現(xiàn)一個(gè)字典排序功能-創(chuàng)新互聯(lián)

本篇文章為大家展示了利用python怎么實(shí)現(xiàn)一個(gè)字典排序功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比柳河網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式柳河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋柳河地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

我們用一個(gè)例子來演示一下字典排序:roster是一個(gè)保存學(xué)生信息的字典,請(qǐng)按照女生優(yōu)先、低年級(jí)在前、總成績(jī)從高到底排序;如果總成績(jī)相同,則順序比較語文、數(shù)學(xué)、英語成績(jī),高者在前。


roster = {
  '李妍可': {'性別':'女', '年級(jí)':3, '語文':98, '數(shù)學(xué)':95, '英語':100}, 
  '鄔勝杰': {'性別':'男', '年級(jí)':5, '語文':95, '數(shù)學(xué)':100, '英語':97},
  '白星瑤': {'性別':'女', '年級(jí)':2, '語文':100, '數(shù)學(xué)':99, '英語':100},
  '吳詩(shī)涵': {'性別':'男', '年級(jí)':3, '語文':98, '數(shù)學(xué)':92, '英語':90},
  '莊嘉順': {'性別':'男', '年級(jí)':5, '語文':97, '數(shù)學(xué)':95, '英語':100}
}

Python最常用的排序函數(shù)是sorted(),我們就用sorted()來實(shí)現(xiàn)這個(gè)排序。如果一次寫出復(fù)合排序條件,有一定難度。我們化繁為簡(jiǎn),一步步實(shí)現(xiàn)。

1. 比較總成績(jī)

>>> sorted(roster, key=lambda name:roster[name]['語文']+roster[name]['數(shù)學(xué)']+roster[name]['英語'])
['吳詩(shī)涵', '鄔勝杰', '莊嘉順', '李妍可', '白星瑤']

看起來沒有問題,但sorted默認(rèn)是升序,總成績(jī)從高到底排序的話,要使用reverse=True這個(gè)參數(shù)。

>>> sorted(roster, key=lambda name:roster[name]['語文']+roster[name]['數(shù)學(xué)']+roster[name]['英語'], reverse=True)
['白星瑤', '李妍可', '鄔勝杰', '莊嘉順', '吳詩(shī)涵']

2. 再來嘗試女生優(yōu)先、低年級(jí)在前的兩個(gè)條件排序

只要在lambda函數(shù)中,把排序項(xiàng)并列寫出來,sorted()就會(huì)自動(dòng)實(shí)現(xiàn)符合條件排序。這里性別排序的條件是'性別'==‘男',對(duì)女生而言,結(jié)果是False(0),小于男生的True(1),自然就排在了前面。

>>> sorted(roster, key=lambda name:(roster[name]['性別']=='男',roster[name]['年級(jí)']))
['白星瑤', '李妍可', '吳詩(shī)涵', '鄔勝杰', '莊嘉順']

3. 最終實(shí)現(xiàn)

嘗試了單個(gè)條件和兩個(gè)條件的排序之后,實(shí)現(xiàn)本題目的最終要求就很容易了。不過,成績(jī)降序排列的話,不能直接使用reverse=True,因?yàn)闀?huì)影響性別和年級(jí)的排序。我們可以稍微變通一下,達(dá)到最終的目的。

>>> sorted(roster, key=lambda name:(
    roster[name]['性別']=='男',
    roster[name]['年級(jí)'],
    300-roster[name]['語文']-roster[name]['數(shù)學(xué)']-roster[name]['英語'],
    100-roster[name]['語文'],
    100-roster[name]['數(shù)學(xué)'],
    100-roster[name]['英語']
  ))
['白星瑤', '李妍可', '吳詩(shī)涵', '莊嘉順', '鄔勝杰']

上述內(nèi)容就是利用python怎么實(shí)現(xiàn)一個(gè)字典排序功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:利用python怎么實(shí)現(xiàn)一個(gè)字典排序功能-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article16/coeedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名虛擬主機(jī)、網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站、云服務(wù)器、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)