关于 min() 函数中 "key" 的问题
Problems regarding "key" in the min() function
分数 = {1:20,2:40,3:0,4:25}
min_score = min(分数, key=scores.get)
我不太明白可以传递给密钥的参数。 运行 上面的代码给了我 3,这正是我想要的。 scores.get return 我是某个内存地址的字典对象。
调用 scores.get() 给我一个错误。 key = 分数抱怨 dict 对象不可调用。
我的问题是为什么分数不能用作密钥的参数?
key (optional) - key function where the iterables are passed and comparison is performed based on its return value
您需要在 key
中执行一个操作,这就像给 returns 一个值的函数。
发生的事情是关键参数接受了一个函数。为字典中的每个键调用该函数,函数 returns 的值用于查找“最小”值。
在您的情况下,调用 scores.get(3) 会 return 0,这比任何其他结果都小,这就是为什么 3 确实是您的结果。
提供“scores.get()”作为键会引发错误,因为“get”需要至少 1 个参数(您正在“获取”的值)。仅传递键的分数会给出字典不可调用的错误,因为您传递的是字典而不是可调用函数。
下面的代码:
min(scores, key=scores.get)
获取具有最小值的键。
步骤:
遍历字典直接给出键:
>>> list(scores)
[1, 2, 3, 4]
>>>
它使用字典的get
方法来获取字典中某个键的值。
示例:
>>> scores.get(1)
20
>>> scores.get(2)
40
>>> scores.get(3)
0
>>> scores.get(4)
25
>>>
key
参数是您希望如何比较所有值的函数。因此,它 3
因为这是处理函数后序列中的最小值。
大致相当于:
>>> min(scores, key=lambda x: scores.get(x))
3
>>>
分数 = {1:20,2:40,3:0,4:25}
min_score = min(分数, key=scores.get)
我不太明白可以传递给密钥的参数。 运行 上面的代码给了我 3,这正是我想要的。 scores.get return 我是某个内存地址的字典对象。
调用 scores.get() 给我一个错误。 key = 分数抱怨 dict 对象不可调用。
我的问题是为什么分数不能用作密钥的参数?
key (optional) - key function where the iterables are passed and comparison is performed based on its return value
您需要在 key
中执行一个操作,这就像给 returns 一个值的函数。
发生的事情是关键参数接受了一个函数。为字典中的每个键调用该函数,函数 returns 的值用于查找“最小”值。
在您的情况下,调用 scores.get(3) 会 return 0,这比任何其他结果都小,这就是为什么 3 确实是您的结果。
提供“scores.get()”作为键会引发错误,因为“get”需要至少 1 个参数(您正在“获取”的值)。仅传递键的分数会给出字典不可调用的错误,因为您传递的是字典而不是可调用函数。
下面的代码:
min(scores, key=scores.get)
获取具有最小值的键。
步骤:
遍历字典直接给出键:
>>> list(scores) [1, 2, 3, 4] >>>
它使用字典的
get
方法来获取字典中某个键的值。示例:
>>> scores.get(1) 20 >>> scores.get(2) 40 >>> scores.get(3) 0 >>> scores.get(4) 25 >>>
key
参数是您希望如何比较所有值的函数。因此,它3
因为这是处理函数后序列中的最小值。大致相当于:
>>> min(scores, key=lambda x: scores.get(x)) 3 >>>