【问题标题】:python return statement conceptpython返回语句概念
【发布时间】:2019-08-01 09:22:26
【问题描述】:

我试图从字典中查找最高的三个值,我应该返回该值的键 这个方法我遇到过

import heapq

def get_n_largest(n,dictionary):
    return heapq.nlargest(n,dictionary,dictionary.get)

从 python 文档中我发现nlargest 需要接受一个整数、一个可迭代对象和一个键(如果提供)。

我不明白return语句中的dictionary.get()dictionary.get()有什么区别 当我尝试打印字典的dictionary.get 时,它会返回

“0x0000020E77B12168处的dict对象的内置方法get”

我进行了一些搜索,但找不到有关它的概念。任何帮助将不胜感激!

【问题讨论】:

  • 您是否应该将get 作为dictionary.get 中的函数调用?
  • nlargest 方法的第三个参数是键或可调用对象,这就是您将 指针 传递给 get 方法的原因。这就是为什么当你print它时它会显示方法的名称和内存位置。
  • 如果您想了解调用不带括号的函数,请阅读此问题的答案。 stackoverflow.com/questions/21785933/…

标签: python dictionary concept


【解决方案1】:

dictionary.get 不调用函数,它只是对函数dictionary.get 的引用。为了调用该函数,您需要执行 dictionary.get(*args, **kwargs) 就这一点而言 - heapq.nlargest(n,dictionary,dictionary.get) 我还没有看过 heapq 的文档。但显然 nlargest callable 似乎将可调用引用作为第三个参数。反过来,nlargest 可能在逻辑中的某处调用 callable 作为 dictionary.get(*args, **kwargs)

【讨论】:

    【解决方案2】:

    没有区别。这两种情况下的 .get 方法完全相同。在 return 语句中,它将应用于字典中的键(可迭代的元素),即。称为get(k)。在打印中它没有应用,即。使用字典键调用并打印 get 值,这是函数引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 2016-07-14
      • 2017-01-29
      • 2020-02-05
      • 2023-03-29
      • 2013-05-30
      相关资源
      最近更新 更多