本篇文章為大家展示了利用python怎么實現一個字典排序功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創新互聯-專業網站定制、快速模板網站建設、高性價比柳河網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式柳河網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋柳河地區。費用合理售后完善,10余年實體公司更值得信賴。我們用一個例子來演示一下字典排序:roster是一個保存學生信息的字典,請按照女生優先、低年級在前、總成績從高到底排序;如果總成績相同,則順序比較語文、數學、英語成績,高者在前。
roster = { '李妍可': {'性別':'女', '年級':3, '語文':98, '數學':95, '英語':100}, '鄔勝杰': {'性別':'男', '年級':5, '語文':95, '數學':100, '英語':97}, '白星瑤': {'性別':'女', '年級':2, '語文':100, '數學':99, '英語':100}, '吳詩涵': {'性別':'男', '年級':3, '語文':98, '數學':92, '英語':90}, '莊嘉順': {'性別':'男', '年級':5, '語文':97, '數學':95, '英語':100} }
Python最常用的排序函數是sorted(),我們就用sorted()來實現這個排序。如果一次寫出復合排序條件,有一定難度。我們化繁為簡,一步步實現。
>>> sorted(roster, key=lambda name:roster[name]['語文']+roster[name]['數學']+roster[name]['英語']) ['吳詩涵', '鄔勝杰', '莊嘉順', '李妍可', '白星瑤']
看起來沒有問題,但sorted默認是升序,總成績從高到底排序的話,要使用reverse=True這個參數。
>>> sorted(roster, key=lambda name:roster[name]['語文']+roster[name]['數學']+roster[name]['英語'], reverse=True) ['白星瑤', '李妍可', '鄔勝杰', '莊嘉順', '吳詩涵']
只要在lambda函數中,把排序項并列寫出來,sorted()就會自動實現符合條件排序。這里性別排序的條件是'性別'==‘男',對女生而言,結果是False(0),小于男生的True(1),自然就排在了前面。
>>> sorted(roster, key=lambda name:(roster[name]['性別']=='男',roster[name]['年級'])) ['白星瑤', '李妍可', '吳詩涵', '鄔勝杰', '莊嘉順']
嘗試了單個條件和兩個條件的排序之后,實現本題目的最終要求就很容易了。不過,成績降序排列的話,不能直接使用reverse=True,因為會影響性別和年級的排序。我們可以稍微變通一下,達到最終的目的。
>>> sorted(roster, key=lambda name:( roster[name]['性別']=='男', roster[name]['年級'], 300-roster[name]['語文']-roster[name]['數學']-roster[name]['英語'], 100-roster[name]['語文'], 100-roster[name]['數學'], 100-roster[name]['英語'] )) ['白星瑤', '李妍可', '吳詩涵', '莊嘉順', '鄔勝杰']
上述內容就是利用python怎么實現一個字典排序功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。
文章名稱:利用python怎么實現一個字典排序功能-創新互聯
分享鏈接:http://m.newbst.com/article16/coeedg.html
成都網站建設公司_創新互聯,為您提供網站排名、虛擬主機、網站維護、自適應網站、云服務器、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯