关于 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 一个值的函数。

Quoted from

发生的事情是关键参数接受了一个函数。为字典中的每个键调用该函数,函数 returns 的值用于查找“最小”值。

在您的情况下,调用 scores.get(3) 会 return 0,这比任何其他结果都小,这就是为什么 3 确实是您的结果。

提供“scores.get()”作为键会引发错误,因为“get”需要至少 1 个参数(您正在“获取”的值)。仅传递键的分数会给出字典不可调用的错误,因为您传递的是字典而不是可调用函数。

下面的代码:

min(scores, key=scores.get)

获取具有最小值的键。

步骤:

  1. 遍历字典直接给出键:

    >>> list(scores)
    [1, 2, 3, 4]
    >>> 
    
  2. 它使用字典的get方法来获取字典中某个键的值。

    示例:

    >>> scores.get(1)
    20
    >>> scores.get(2)
    40
    >>> scores.get(3)
    0
    >>> scores.get(4)
    25
    >>> 
    
  3. key 参数是您希望如何比较所有值的函数。因此,它 3 因为这是处理函数后序列中的最小值。

    大致相当于:

    >>> min(scores, key=lambda x: scores.get(x))
    3
    >>>