91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python怎么實現一個字典排序功能

發布時間:2020-12-18 13:51:20 來源:億速云 閱讀:201 作者:Leah 欄目:開發技術

本篇文章為大家展示了利用python怎么實現一個字典排序功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

我們用一個例子來演示一下字典排序: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()來實現這個排序。如果一次寫出復合排序條件,有一定難度。我們化繁為簡,一步步實現。

1. 比較總成績

>>> 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)
['白星瑤', '李妍可', '鄔勝杰', '莊嘉順', '吳詩涵']

2. 再來嘗試女生優先、低年級在前的兩個條件排序

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

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

3. 最終實現

嘗試了單個條件和兩個條件的排序之后,實現本題目的最終要求就很容易了。不過,成績降序排列的話,不能直接使用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怎么實現一個字典排序功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

利津县| 酒泉市| 沙湾县| 巴中市| 山丹县| 百色市| 彭山县| 平利县| 祁门县| 蓬莱市| 龙口市| 阿尔山市| 会昌县| 林甸县| 靖远县| 理塘县| 炎陵县| 巴林左旗| 澎湖县| 钟祥市| 镇雄县| 诸暨市| 禹州市| 鄂温| 静安区| 辉南县| 西畴县| 镇赉县| 休宁县| 句容市| 新邵县| 威信县| 延安市| 中宁县| 贡觉县| 自治县| 孝昌县| 沙河市| 山阳县| 如皋市| 乐都县|