我在 python 中创建了一个 dict 并想找到最大值。我用 key= 匿名函数对 max 进行了试验。我当然实现了错误,但不知何故代码运行了,我最终输出了一个键,这对我来说根本没有意义。你能向我解释一下它为什么起作用以及如何起作用吗?谢谢你。
Q['state1']={'zone':20,'left':50,'right':89,'forward':34}
qmax=max(Q['state1'],key=lambda x: x[1]) %this returns 'forward'
qmax=max(Q['state1'],key=lambda x: x[0]) %this returns 'zone'
如果您将字典传递给max
,它会遍历字典键(此处是字符串列表),并且由于您已指定比较器函数,因此现在在x[1]
(第一行)上完成比较,这恰好是每个键的第二个字符,并且x[0]
(在第二行中)恰好是每个键的第一个字符。
因此,例如,您有一个键列表:
['forward', 'zone', 'right', 'left']
请注意,此列表可以按任何顺序返回,因为字典没有排序。现在,选择最大值的基础是第二个字符,因此您选择基于:
['f o rward', 'z o ne', 'r i ght', 'l e ft']
碰巧的是,对于您的 CPython 实现,forward
在之前返回zone
(尽管可能已经返回任何一个,这取决于从字典中返回键的顺序)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句