一个字典,通过比较值返回最大值对应的键,我想到用 lambda 解析,max(dic,key=lambda i : dic[i])。 在网上看到别人有一种方法 max(dic,key=dic.get),这个把 dic.get 当做参数就有点看不懂了,有没有老哥能解释一下。
1
jmc891205 2018-04-10 10:48:39 +08:00
哪里不懂啊 你的 lambda 表达式要实现的不就是 dict.get 的功能?
|
2
laike9m 2018-04-10 11:00:50 +08:00
没有这么用的。要么用 lambda,要么用 operator.itemgetter
|
3
whoami9894 OP @jmc891205 dic.get 返回的是什么呢,这里有点不懂
|
4
whoami9894 OP @laike9m 但我试了 dic.get ,确实能返回正确结果
|
5
jmc891205 2018-04-10 11:07:09 +08:00 1
|
6
Morriaty 2018-04-10 11:18:17 +08:00
请搜索 python __getitem__
|
7
whoami9894 OP @jmc891205 嗯嗯谢谢老哥!还有一个问题想请教一下,这里的.get 不加括号 是代表 dic 的一个属性 还是 对 dic 方法的调用?
|
8
aliao0019 2018-04-10 11:21:38 +08:00
In [2]: di = {}
In [3]: di.get Out[3]: <function get> In [4]: lambda i: di[i] Out[4]: <function __main__.<lambda>> |
9
ipwx 2018-04-10 11:23:24 +08:00
@laike9m 别误人子弟。dic.get 好好一成员函数,干嘛不能用?
https://docs.python.org/3/library/stdtypes.html?highlight=dict%20get#dict.get @whoami9894 “函数”也是对象。dic.get 指的就是 dic.get 这个函数,没别的意思。 顺便 dic.get 是已经绑定了 dic 这个实例的 get 成员函数。如果你用 dict.get (所以说你用 dic 这个对象名太屎了),那就是 dict 类中未绑定实例的 get 成员函数。另外一个 bonus,你有时候可以使用 dict.get(dic, i) 来调用一个未绑定的成员函数。 |
10
whoami9894 OP @aliao0019 懂了懂了,感谢!
|
11
whoami9894 OP @Morriaty 好的👌
|
12
whoami9894 OP @ipwx 懂了!万分感谢!
|
13
sidewalk 2018-04-10 11:29:50 +08:00
参数 key 接收的是 dic.get 这个函数呀
|
14
jmc891205 2018-04-10 11:31:03 +08:00
@whoami9894 都不是 是这个函数对象本身。max 内部会去调用它。
|
16
laike9m 2018-04-10 11:38:28 +08:00
好吧,看成了根据 key 找到 value 最大的那个 dict 了……
|