通过最大值获取dict键[重复]

Posted

技术标签:

【中文标题】通过最大值获取dict键[重复]【英文标题】:Get dict key by max value [duplicate] 【发布时间】:2012-12-15 00:35:51 【问题描述】:

我正在尝试获取其值是所有 dict 值中最大值的 dict 键。

我找到了两种方式,都不够优雅。

d= 'a':2,'b':5,'c':3
# 1st way
print [k for k in d.keys() if d[k] == max(d.values())][0]
# 2nd way
print Counter(d).most_common(1)[0][0]

有更好的方法吗?

【问题讨论】:

【参考方案1】:

max()使用key参数:

max(d, key=d.get)

演示:

>>> d= 'a':2,'b':5,'c':3
>>> max(d, key=d.get)
'b'

key 参数接受一个函数,对于迭代中的每个条目,它将找到 key 函数为其返回最大值的条目。

【讨论】:

如果有多个键怎么办?我可以通过,比如len 来获得最长且价值最高的键吗? @SiddharthaRT:您可以使用lambda 作为键:max(d, key=lamda k: (d[k], len(k))) 将返回具有最高值的键,如果有多个这样的键,它将是最长的返回的键。 如果您不仅想要具有最大值的键,而且想要字典中具有前 n 个最大值的前 n 个键,您会怎么做? @Tropilio 然后使用heapq.nlargest()

以上是关于通过最大值获取dict键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中找到字典中的最大值键[重复]

使用列表值获取 dict 的最大值和最小值

从字典中获取最大值[重复]

Python - 嵌套字典中的最大值键,泛化

为字典python中的每个键选择最大值

使用相同的密钥从dict.values()获取最大值