Первая проблема состоит в том, что числовые значения все еще находятся внутри строк (которые по какой-то причине находятся внутри списка из одного элемента).Я предлагаю вам разбить строки на ':'
и использовать словарь в качестве структуры слияния данных, а не список.
>>> u = ['river: 0.3']
>>> v = ['spread: 0.04']
>>> s = ['idaho: 0.5']
>>>
>>> d = {}
>>> for item, in (u, v, s):
... key, value = item.split(':')
... d[key] = float(value)
...
>>> d
{'spread': 0.04, 'river': 0.3, 'idaho': 0.5}
Обратите внимание, что item,
распаковывает список длиной 1.
Конечно, если вы жестко закодировали u
, v
и s
, вы можете просто набрать
d = {'river': 0.3, 'spread': 0.04, 'idaho': 0.5}
in.
Теперь у вас есть хороший, чистый словарь для простых операций поиска.
>>> d['river']
0.3
Теперь вы можете сортировать items
диктанта по значению в порядке убывания ...
>>> from operator import itemgetter
>>> sorted(d.items(), key=itemgetter(1), reverse=True)
[('idaho', 0.5), ('river', 0.3), ('spread', 0.04)]
... или использовать встроенную функцию max
, если вам просто нужнопара (ключ, значение) с максимальным значением.
>>> max(d.items(), key=itemgetter(1))
('idaho', 0.5)
>>>
>>> _, max_value = max(d.items(), key=itemgetter(1))
>>> max_value
0.5