Как из словаря вывести 3 ключа с максимальным значением?
Есть словарь, из которого надо вывести 3 максимальных значения. Как это можно реализовать?
di = {'Матерь Богов': 528,
'Крылья': 162,
'Эта Музыка Будет Вечной': 295,
'Золотое пятно': 1567,
'Утро Полины': 174}
У меня получается вывести только одно максимальное значение вот таким кодом:
ma = (max(di, key=di.get))
print(ma)
Ответы (3 шт):
Автор решения: CrazyElf
→ Ссылка
Используйте сортировку и срез. Поскольку сортировка идёт в возрастающем порядке, нужно брать три последних элемента:
print(sorted(di, key=di.get)[-3:])
Вывод:
['Эта Музыка Будет Вечной', 'Матерь Богов', 'Золотое пятно']
Автор решения: arnold
→ Ссылка
Как вариант:
di = {
'Матерь Богов': 528,
'Крылья': 162,
'Эта Музыка Будет Вечной': 295,
'Золотое пятно': 15,
'Утро Полины': 174
}
di2 = di
for i in range(3):
ma = (max(di2, key=di2.get))
print(ma)
di2.pop(max(di2, key=di2.get), 3000)
Автор решения: Stanislav Volodarskiy
→ Ссылка
heapq.nlargest решает именно эту задачу:
import heapq
di = {'Матерь Богов': 528,
'Крылья': 162,
'Эта Музыка Будет Вечной': 295,
'Золотое пятно': 1567,
'Утро Полины': 174}
print(heapq.nlargest(3, di, key=di.get))
$ python nlargest.py ['Золотое пятно', 'Матерь Богов', 'Эта Музыка Будет Вечной']