2016-04-08 3 views
-1

Я прочитал эти должности 1, 2, 3, но я до сих пор не могу понять, следующий код Python:как collections.defaultdict.get работа в ключевом параметре Я Макс ничего о в --- питон

>>> s = 'mississippi' 
>>> d = defaultdict(int) 
>>> for k in s: 
...  d[k] += 1 
... 
>>> lis = ['m', 'i', 's', 'p'] 
>>> max(lis, key=d.get) 
'i' 

Я знаю, время, в которое происходит письмо, хранится в d. И когда я ввожу:

>>> d.get 
<built-in method get of collections.defaultdict object at 0x7f506ed8d710> 

Он сказал, что get - это метод. Почему доза не использует скобки? И какая форма данных возвращается?

+0

Это скопировано и неотредактировано из сеанса реального интерактивного интерпретатора, который вы запускали? Он не должен работать; аргумент 'key' для' max' относится только к ключевым словам. – user2357112

+0

@ пользователь2357112 извините. моя вина. – sydridgm

+1

Рассмотрите возможность использования [collections.Counter] (https://docs.python.org/2/library/collections.html#counter-objects). Он имеет метод 'most_common()', который делает именно то, что вы здесь делаете. –

ответ

1

max принимает аргумент ключевого слова - функцию «ключ». например:

max(iterable, key=some_function) 

Что (я предполагаю, что), как вы используете его (вместо max(iterable, function))

Функция «ключ» будет вызываться для каждого элемента в итерацию и результат «ключевой» функции используется для сравнения элементов.

Итак, в вашем случае будет возвращен элемент, для которого возвращается d.get, максимальное значение.

d - ваш дефолт по умолчанию. d.get(key) возвращает значение, связанное с этим ключом, и передаваемые ему вещи - это ключи, которые находятся в d. Таким образом, вы выбираете ключ, который имеет максимальное значение.

+1

На самом деле это странно, потому что 'max (lis, d.get)' должен возвращать '['m', 'i', 's', 'p']' (что является максимальным значением 'lis' и функцией' d.get') – wim

+0

@wim - Не уверен, что я следую. Он сравнивает 'd.get ('m')', 'd.get ('i')', ... – mgilson

+0

Попробуйте, и вы увидите, что я имею в виду – wim

 Смежные вопросы

  • Нет связанных вопросов^_^