【问题标题】:Problems regarding "key" in the min() function关于 min() 函数中“key”的问题
【发布时间】:2021-12-21 21:23:49
【问题描述】:

分数 = {1:20, 2:40, 3:0, 4:25}

min_score = min(scores, key=scores.get)

我不太明白可以传入key的参数。运行上面的代码给了我 3 这是我想要的。 score.get 在某个内存地址向我返回一个 dict 对象。

调用 score.get() 给我一个错误。 key = score 抱怨 dict 对象不可调用。

我的问题为什么不能将分数用作键的参数?

【问题讨论】:

    标签: python dictionary min


    【解决方案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
      >>> 
      

    【讨论】:

      【解决方案2】:

      key(可选) - 传递iterables并根据其返回值执行比较的key函数

      您需要在key 中执行一个操作,这就像给出一个返回值的函数。

      Quoted from

      【讨论】:

        【解决方案3】:

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

        在您的情况下,调用 score.get(3) 将返回 0,它小于任何其他结果,这就是为什么 3 确实是您的结果。

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

        【讨论】:

          猜你喜欢
          • 2019-06-03
          • 1970-01-01
          • 2014-03-08
          • 1970-01-01
          • 1970-01-01
          • 2015-01-23
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多