【问题标题】:Get dict key by max value [duplicate]通过最大值获取dict键[重复]
【发布时间】: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]

有更好的方法吗?

【问题讨论】:

    标签: python dictionary counter


    【解决方案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()
    猜你喜欢
    • 2015-01-08
    • 2019-01-01
    • 1970-01-01
    • 2017-10-25
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多