Как сделать доску самых больших значений из словаря Discord Python
У меня есть бот и словарь внутри него. И как бы мне надо сделать доску самых больших значений:
value = {
"887035720101929040": { # Это ID пользователя
"balance": 534 # Баланс
}
}
Это как бы экономический бот, где у тебя есть баланс с деньгами. И мне надо сделать команду !leaderboard где будут самые богатые участники. Проблема в том, что это не список. И тут словарь в словаре и дальше значение. Подскажите пожалуйста как это сделать.
Ответы (1 шт):
Автор решения: Acinit
→ Ссылка
Если кратко, то можно использовать sorted с аргументами по ключу и используя reverse=True, например вот так (добавил еще парочку значений в лист, чтобы визуалить):
value = {
"887035720101929040": {
"balance": 534
},
"123123": {
"balance": 100
},
"321321": {
"balance": 200
}
}
sorted_value = dict(sorted(value.items(), key=lambda x: x[1]['balance'], reverse=True))
print(sorted_value)
Вывод:
{'887035720101929040': {'balance': 534},
'321321': {'balance': 200},
'123123': {'balance': 100}}
P.S. В вашей задаче предполагается обернуть все это в удобную функцию, на вход которой идет словарь и ключ, например вот так:
def sort_dict_key(dictr, k):
return dict(sorted(dictr.items(), key=lambda x: x[1][k], reverse=True))