@bibliophile

Как получить n максимальных значений из словаря вложенного в словарь?

Есть словарь вида:
А = {
"ключ_1": { "ключ_х" : 27, "ключ_у" : 25},
"ключ_2": { "ключ_х" : 33, "ключ_у" : 44},
"ключ_3" :{ "ключ_х" : 40, "ключ_у" : 99}
}
Мне нужна функция которая будет принимать 3 аргумента:
1. словарь
2. название ключа второго порядка(например, "ключ_х")
3. n максимальных значений значений которые требуется найти
На выходе функция должна дать словарь, где ключем будет ключ первого порядка(например, "ключ_2"), а его значение это значение ключа второго порядка, который мы передали в функцию(например, "ключ_х).
То есть, если бы функция называлась get_max, то вызов ее с такими параметрами:
get_max(A, "ключ_х", 2)
должен вернуть словарь вида:
{ "ключ_2" : 33 , "ключ_3" : 40 }
Подскажите как адекватно реализовать такую функцию, потому что у меня либо не получается ее сделать, либо она работает так долго, что просто невозможно ей пользоваться.
Да и еще, если бы значения ключей были бы равны, то словарь в любом случае должен был бы содержать оба ключа и оба значения
Спасибо
  • Вопрос задан
  • 577 просмотров
Решения вопроса 1
@Animkim
Питон вокруг меня
from operator import itemgetter

def get_max(data, key, count):
    maximum = [(k, data[k][key]) for k in data]
    maximum = sorted(maximum, key=itemgetter(1), reverse=True)
    return dict(maximum[:count])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы