Ответ 1
Словарь "a" является итерируемой структурой в python. Когда вы выполняете цикл с помощью for x in a
, вы перебираете ключи в словаре.
Во второй строке функция max принимает два аргумента: Итерируемый объект (a) и необязательную функцию "ключ". Функция Key будет использоваться для оценки значения элементов в - наибольшая из которых будет возвращена.
Примеры:
>>> a = dict(((1,3),(0,-1),(3,21)))
>>> for x in a:
... print x #output the value of each item in our iteration
...
0
1
3
Обратите внимание, что выводятся только "ключи". Когда мы передаем каждый из этих ключей, чтобы "получить"...
>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21
Мы получаем значение для каждого ключа. Теперь посмотрим, как работает max.
>>> b=[2, 3, 5, 6, 4]
>>> max(b)
6
>>> def inverse(x):
... return 1.0 / x
...
>>> max(b, key=inverse)
2
Как вы можете видеть, max (по умолчанию) просто найдет наибольшее число в нашем списке с истребителями. Если мы определим "обратную" функцию, она вернет самый большой элемент в b, для которого inverse(item)
является наибольшим.
Объедините эти два элемента, и мы увидим, что max(a, key=a.get)
вернет item
в a
, для которого наибольшее значение a.get(item)
. то есть ключ, соответствующий наибольшему значению.