как найти ключ с наибольшим значением в диктовке? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть диктат.

Пример:

scores[i][subentity_type] = the_score

Это выглядит так:

scores = {0:{'SD':1,'ED':2},1:{'SD':0.5,'ED':3}}

, поэтому я хотел бы функцию, которая возвращает

'SD' --> 0
'ED' --> 1

для каждого subentity_type, я хочу найти ключ i с наибольшим количеством очков. у вас есть идея, если есть функция python, чтобы обеспечить это? спасибо!

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Поскольку вы на самом деле не объяснили, как должен выглядеть ваш конечный результат, но я думаю, вы можете отсортировать элементы dict по значениям и получить ключ с наибольшим значением. Возьмем пример ответа Тина

mydict={'a': {'aa': 3, 'ab':7},
        'b': {'ba': 5, 'bb':9}}

new_dict ={}

for k in mydict.keys():
    new_dict[k] = sorted(mydict[k].items(), key= lambda v:-v[1])[0][0] 

# new_dict = {'a': 'ab', 'b': 'bb'}

0 голосов
/ 23 марта 2020

Существует метод max(), который принимает массив и определяет максимальное значение.

Вы можете превратить значения dict в список с помощью mydict.values() или в качестве генератора v for v in mydict.values().

Однако у вас есть dict of dicts. Вы можете перебрать его с помощью for dictofdict in mydict.values()

-> Результирующий код:

>>> mydict={'a': {'aa': 3, 'ab':7},
...         'b': {'ba': 5, 'bb':9}}
>>> [v for dictofdict in mydict.values() for v in dictofdict.values()]
[3, 7, 5, 9]
>>> max([v for dictofdict in mydict.values() for v in dictofdict.values()])
9

Диктовка, в которой вы получите наибольшее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...