簡體   English   中英

如何對嵌套字典進行排序?

[英]How to sort a nested dictionary?

我想按值對嵌套字典進行排序,並按另一個值進行余數,再按另一個值對余數進行排序。 我有三個標准。 對於其中三個中的兩個,我想分配 reverse=True,但對於第三個條件,我想分配 reverse=False。 如何使用反向和 lambda 來做到這一點? 這是一段代碼:

result = sorted(dict_punkty.items(), key=lambda k: (k[1]["W"], k[1]["PKT"], k[1]), reverse=True)

k[1]["W"] 和 k[1]["PKT"] 必須倒序,k[1] 不能倒序。

我找不到更短的東西,所以我建議以下解決方案:

dict_punkty={'Jan': {'W': 1, 'PKT': 25}, 'Artur': {'W': 1, 'PKT': 20}, 'Karol': {'W': 0, 'PKT': 10}}

# Put key names in a list sorted in reverse order
names = sorted(dict_punkty.keys(), reverse=True)

# Put names and their order in a temporary dictionary
names = {name: i for i, name in enumerate(names)}

# Put the data in a list of tuples replacing key names with order numbers
result = [(names[k[0]], k[1]) for k in dict_punkty.items()]

# Sort the list of tuples
result = sorted(result, key=lambda k: (k[1]["W"], k[1]["PKT"], k[0]), reverse=True)

# Reverse names/orders as keys/values in the temporary dictionary
names = {i: name  for name, i in names.items()}

# Get the final result by replacing the order numbers with key names
result = [(names[k[0]], k[1]) for k in result]

print(result)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM