通过最大值获取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键[重复]的主要内容,如果未能解决你的问题,请参考以下文章