collections.defaultdict.get 如何在 max 语句的关键参数中工作--- python
how collections.defaultdict.get work in max statement's key paramter--- python
我已经阅读了这些 post 1, 2, 3,但我仍然无法理解以下 python 代码:
>>> 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是一个方法。为什么不使用括号?它形成了什么样的数据returns?
max
接受一个关键字参数——一个 "key" 函数。例如:
max(iterable, key=some_function)
你是怎么使用它的(我猜)(而不是 max(iterable, function)
)
将为可迭代对象中的每个元素调用"key"函数,"key"函数的结果用于比较元素。
因此,在您的情况下,将返回 d.get
returns 最大值的元素。
d
是您的默认指令。 d.get(key)
returns 与该键关联的值——以及传递给它的东西是 d
中的键。所以你选择了具有最大值的键。
我已经阅读了这些 post 1, 2, 3,但我仍然无法理解以下 python 代码:
>>> 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是一个方法。为什么不使用括号?它形成了什么样的数据returns?
max
接受一个关键字参数——一个 "key" 函数。例如:
max(iterable, key=some_function)
你是怎么使用它的(我猜)(而不是 max(iterable, function)
)
将为可迭代对象中的每个元素调用"key"函数,"key"函数的结果用于比较元素。
因此,在您的情况下,将返回 d.get
returns 最大值的元素。
d
是您的默认指令。 d.get(key)
returns 与该键关联的值——以及传递给它的东西是 d
中的键。所以你选择了具有最大值的键。