Как из словаря вывести 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
['Золотое пятно', 'Матерь Богов', 'Эта Музыка Будет Вечной']
→ Ссылка