【问题标题】:What is the difference between get() and .get in Python?Python 中的 get() 和 .get 有什么区别?
【发布时间】:2021-05-20 18:00:26
【问题描述】:

我在一个程序中有这两行代码

res = Counter(test_str)
res = max(res, key=res.get)

但是,我似乎无法理解key=res.get。我知道它按值对字典 (res) 的键进行排序,但我认为 get() 方法需要一个强制性的“键”参数?怎么可能只有.get 而不是.get(key=)

【问题讨论】:

  • .get(key=),key表示字典中的key。字典被分成键值对。如果你只是传入一个没有关键字key= 的参数,你会得到相同的结果。 max 函数中的键将一个函数作为其键 - 在这种情况下,getter 函数 .get() 用于字典。

标签: python dictionary get max


【解决方案1】:

max 函数中,比较您传入的值并返回最大值。例如,这个程序返回这个列表中最大的整数:

print(max([1,2,3,4]))

但是,您也可以将一个函数传递给maxkey 参数,它应该是一个函数或lambda,它可以作用于可迭代列表中的值并返回一个可以正确比较的值。例如,如果项目在列表中,Counter(stuff).get 方法将返回一个整数,表示项目在列表中出现的次数。您可以将方法而不是方法调用传递给 max 函数,max 函数将比较每个单独项目在可迭代列表中出现的次数。例如:

c = Counter('hello, world!')
print(max(c, key=c.get))

上面的例子将打印字符串中最常见的字符。

【讨论】:

    【解决方案2】:

    这里的 get 与您习惯的 get 不同,即从字典中获取数据。如果你阅读了函数 max 的documentation -

    有两个可选的仅关键字参数。 key 参数指定一个单参数排序函数,类似于 list.sort()

    这意味着你提供了一个一次性函数,它最多只接受一个参数。在此函数的基础上,最大值将返回迭代器的最大值。

    比如改变按键功能-

    from collections import Counter
    x = [1,2,3,1,2,1,3,1,1,1,1]
    c = Counter(x)
    # Counter({1: 7, 2: 2, 3: 2})
    max(c, key=lambda x: 1/x) # prints 1 as 1/1 is the largest of c
    min(c, key=lambda x: 1/x) # prints 3 is 1/3 is the smallest of c
    

    As min 也实现了“key”参数。提供“key”允许用户改变 min/max 函数的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 2021-05-10
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2018-06-09
      相关资源
      最近更新 更多