【问题标题】:how to get the key with the highest value in a dictionary如何获取字典中具有最高值的键
【发布时间】:2021-03-27 09:47:29
【问题描述】:

我有一个这样的字典,其中包含作为键的随机数和作为值的素数。

d= {123: 2, 43: 1, 54: 2, 12: 2, 76: 2, 84: 3, 98: 2, 678: 3, 543: 2, 231: 3}

我想得到价值最高的数字。如果多个键具有相同的值,则应打印出最大的键。 例如,这里的数字 84,678 和 231 都具有最高值,我希望打印出 678 而不是 84 或 231。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您可以使用max 和作为比较器键的多因素,它首先采用value (pair[1]),然后是key (pair[0])。最后的[0] 是只检索密钥,而不是对

    values = d = {123: 2, 43: 1, 54: 2, 12: 2, 76: 2, 84: 3, 98: 2, 678: 3, 543: 2, 231: 3}
    max_key = max(values.items(), key=lambda pair: (pair[1], pair[0]))[0]
    print(max_key) # 678
    

    更高效的代码 (~30%)

    from operator import itemgetter 
    max_key = max(values.items(), key=itemgetter(1,0))[0]
    

    【讨论】:

    • 或者可能稍微快一点>>> from operator import itemgetter >>> max(d.items(), key=itemgetter(1,0))[0]
    【解决方案2】:
    d = {123: 2, 43: 1, 54: 2, 12: 2, 76: 2, 84: 3, 98: 2, 678: 3, 543: 2, 231: 3}
    #sort values in ascending order
    d = dict(sorted(d.items(), key=lambda item: item[1]))
    #sort keys in ascending order
    d = dict(sorted(d.items()))
    #convert it to list of keys and get the last one(max in keys and values)
    print(list(d)[-1]) # 678
    

    【讨论】:

    • 只有在最高键具有最高值时才能正常工作。如果 84 有 4 怎么办。它再次打印出 678
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多