Как получить ключ с наибольшим значением из словаря, созданного из строки? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть строка в формате k1=v1,k2=v2 и так далее. Я хочу вернуть значение k с максимальным значением v.

Я пытаюсь запустить приведенный ниже код, но, похоже, он не работает -

s1 = "0=0.0,1=4.097520999795124e-05,2=0.0007278731184387373,3=0.339028551210803,4=0.33231086508575525,5=0.32789173537500504"
stats = dict(map(lambda x: x.split('='), s1.split(',')))
x = max(stats, key=stats.get)
print(x)

Это печатает 1в то время как ожидаемый результат составляет 3.

1 Ответ

2 голосов
/ 28 октября 2019

Вы можете использовать max с ключом для учета только второго значения в кортежах key / value. Также обратите внимание, что values должно быть приведено к float, так как в противном случае сравнение элементов будет лексикографическим:

from operator import itemgetter

max_val = max(((k,float(v)) for k,v in stats.items()), key=itemgetter(1))
print(max_val)
# ('3', 0.339028551210803)

print(max_val[0])
# 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...