【问题标题】:how does the python min function workspython min 函数是如何工作的
【发布时间】:2013-02-20 17:47:44
【问题描述】:

我正在阅读期望输出是获取具有最小值的元素的问题

如果

d= {'a':2,'b':3,'f':5}

答案是

给出的答案是min(d, key=d.get)

谁能解释一下这是如何工作的

【问题讨论】:

  • 找到dkey,其中函数d.get(key)(相当于d[key])返回最低可比值。
  • @eumiro ,如果 min(d.values()) 我没有得到第二个参数的用途,那么 min 函数也可以工作。我的意思是第二个参数与第一个参数有什么关系
  • The documentation is very good. "可选的 key 参数指定一个单参数排序函数,类似于 list.sort() 使用的函数。"
  • @user2082226 min(d) 返回最小键,而不是具有最小值的键
  • @user2082226 - min(d) 在您的情况下返回a,因为a<b<f,而不是因为2<3<5。对于d={'a':3,'b':2,'c':1}min(d) 返回a,但min(d, key=d.get) 返回c(因为1<2<3)。

标签: python


【解决方案1】:

min 函数根据给定的键返回可迭代的最小值。在这种情况下,它返回具有最小值的d 的键。 d.get 允许您访问字典键的对应值,当您迭代 d 时,这些值会被迭代。

例如:

>>> min([3, 5, 2, 1, 5])
1
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for i in d:
...     print i
b
c
a
>>> d.get('b')
2
>>> d.get('d')  # Nothing is returned
>>> min(d, key=d.get)
'a'

minkey 参数指定您要在哪个键上找到最小值。

例如:

>>> min(['243', '172344', '6'])
172344
>>> min(['243', '172344', '6'], key=len)
6

min 函数执行如下操作:

>>> min(['243', '172344', '6'], key=len)
# sort the list with key (call `len` on every element and sort based on that)
# sorted(['243', '172344', '6'], key=len)
# return the first element (lowest value)
# sorted(['243', '172344', '6'], key=len)[0]
6

【讨论】:

  • i in d 是如何工作的。不是 d 是字典,我认为我们必须为此使用 d.iteritems()
  • @user2082226 遍历字典会遍历其键 - 它直接等效于 for i in d.keys()
  • 我没有得到这个。所以d 是可以的字典。现在key=d.get 的功能是什么,我了解 d.get() 获取存储在某个键处的值,但从哪里获取它的键
  • @user2082226 min 函数调用key 对可迭代对象进行排序,并返回结果列表的第一个元素。排序方法调用迭代的每个元素上的函数对它们进行排序。这就像 mapfilter 函数 key 参数的工作原理一样。
  • 为什么我需要key 来排序。你能用代码解释通话过程中发生的事情吗?您的意思是min 函数需要key 以便它可以获取存储在该键处的值,因此值变为d.get(key)。所以在所有的值都被 fe5tched 之后,它会按升序对它们进行排序,并给出列表中的第一个。我对吗???所以key=d.get 被翻译成d.get(key) 用于每个项目以获得那里的价值
猜你喜欢
  • 2015-09-18
  • 2017-04-18
  • 2016-02-16
  • 2012-06-08
  • 2010-12-16
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多