我有一個看起來像這樣的用戶字典:
{
user1: {
userLevel: 1,
userScore: 2
},
user2: {
userLevel: 5,
userScore: 16
},
user3: {
userLevel: 3,
userScore: 14
}
}
我需要按值對其進行排序,以便具有最高級別的用戶為第 1,如果某些用戶具有相同的級別,則得分較高的用戶為第 1。如果有 2 個用戶的等級和分數相同,那么他們中的任何一個都可以先行,沒關系。有沒有一種干凈的方法可以做到這一點?
uj5u.com熱心網友回復:
關于如何按值排序字典已經有多個答案。這里唯一改變的是您的專案也是字典。
該函式允許您根據特定鍵sorted對字典進行排序。
您要做的是在特定鍵上訂購字典,在本例中為userScore。
因此,您需要找到一種方法來指定這是您的排序所基于的鍵。
您還需要一種方法來遍歷您的字典。這是通過函式完成的.items()。
如果你的大字典被稱為 a,那么a.items()將回傳一個元組串列,其中每個元組都有一個鍵:user_x和一個值:字典。
a.items() = [('user1', {'userLevel': 1, 'userScore': 2}), ('user2', {'userLevel': 5, 'userScore': 16}), ('user3', {'userLevel': 3, 'userScore': 14})]
現在您可以遍歷這些專案,并且您需要為您在迭代時決議的每個專案指定,您需要評估其關鍵 userScore 是大于還是低于其他項。
因此,對于每個專案 x(在我們的例子中是一個元組),它們的 key userScore 是用 x[1]['userScore'] 檢索的
代碼的排序行應如下所示:
a = sorted(a.items(), key = lambda tuple : tuple[1]['userScore']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479612.html
