获取与 python dict 中的 max(value) 对应的键[重复]

2024-02-08

让我们考虑一下(键,值)对的示例字典,如下所示:

 dict1 = {'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28, 'g' : 90}
 dict2 = {'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28}

在字典中的所有值中,90 是最高的。我需要检索与其对应的一个或多个密钥。

有哪些可能的方法可以完成此任务?哪一种是最有效的,为什么?

Note:

  1. 键和/或值对于字典来说不按顺序排列。程序不断向字典添加新的(键,值)对。

  2. max(value) 可能有多个键

    a) 如果一个字典只有一个对应于 max(value) 的键,那么结果应该只是一个字符串(即 Key)。示例:上面的 dict2 应返回“j”

    b) 如果一个字典有多个与 max(value) 对应的键,那么结果应该是字符串列表(即键)。示例:上面的 dict1 应返回 ['j', 'g']


Use max()和列表理解:

>>> dic = {'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28,"k":90}
>>> maxx = max(dic.values())             #finds the max value
>>> keys = [x for x,y in dic.items() if y ==maxx]  #list of all 
                                                   #keys whose value is equal to maxx
>>> keys
['k', 'j']

创建一个函数:

>>> def solve(dic):
    maxx = max(dic.values())
    keys = [x for x,y in dic.items() if y ==maxx] 
    return keys[0] if len(keys)==1 else keys
... 
>>> solve({'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28})
'j'
>>> solve({'a' : 10, 'x' : 44, 'f': 34, 'h':89, 'j': 90, 'd': 28, 'g' : 90})
['g', 'j']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取与 python dict 中的 max(value) 对应的键[重复] 的相关文章

随机推荐