我正在嘗試獲取已排序的字典。字典應根據以下兩個標準進行排序:
- 根據值(整數)
- 如果兩個鍵 (str) 具有相同的值,則按字母順序排序
到目前為止,我已經在我的代碼中撰寫了以下行:
sorted_word_values_dict = dict(sorted(word_values_dict.items(), key=operator.itemgetter(1)))
此代碼根據第一個標準正確排序,但如果兩個鍵 (str) 具有相同的值(例如,兩者的值都為 2),則它們需要按字母順序排序。如何在我的代碼中包含這個額外的標準?
提前感謝您的幫助!
uj5u.com熱心網友回復:
您可以使用lambda作為一個關鍵功能的sorted呼叫
以下應該dict按排序順序為您提供新的-
sorted_word_values_dict = dict(sorted(word_values_dict.items(), key=lambda x: (x[1], x[0])))
keysorted 函式中的引數可以采用回傳多個值的函式,如果第一個值之間存在聯系,則比較將移至鍵中的下一個值。
在此示例中,x[1]將首先比較 (dict value),如果相同,我們將比較x[0](dict key)。
uj5u.com熱心網友回復:
鑒于這本詞典:
d = {'c': 1251, 'b': 2372, 'f': 5172, 'a': 2372}
如果要按升序對值進行排序,并按字典順序對鍵進行排序:
out = dict(sorted(d.items(), key=lambda x: (x[1],x[0])))
輸出:
{'c': 1251, 'a': 2372, 'b': 2372, 'f': 5172}
但是,如果您想按降序對值進行排序(并按字典順序對鍵進行排序):
out = dict(sorted(d.items(), key=lambda x: (-x[1],x[0])))
輸出:
{'f': 5172, 'a': 2372, 'b': 2372, 'c': 1251}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/407408.html
標籤:
上一篇:如何在JS中遞回排序
下一篇:我如何計算字串?
