如何使用max()函数打印多个具有相同值的字典键

时间:2015-12-06 08:05:50

标签: python python-3.x dictionary printing max

所以假设我有一个包含不同键的多个最大值的字典。我试着使用代码:

    taste = {"Mussels": 4, "Limpets": 4, "Prawn": 2, "Plankton":1}
    print(max(taste, key=taste.get))

但它只给了我贻贝或帽贝,取决于哪一个是第一个。我试图设置最高值,然后遍历我的键和每个键,我的值如:

    highest = max(taste.values())
    for i in taste.keys():
      for j in taste[i]:
        if j == highest:
          print(i)

但这似乎不起作用,因为你不能像我字典中的值那样通过整数进行交互。那么最简洁,最简单的方法是什么呢?

4 个答案:

答案 0 :(得分:1)

这就是我要做的事情:

highest_value = max(taste.itervalues())
print [key for key, value in taste.iteritems() if value == highest_value]

答案 1 :(得分:0)

您可以使用列表推导。

>>> taste = {"Mussels": 4, "Limpets": 4, "Prawn": 2, "Plankton":1}
>>> highest = max(taste.values())
>>> [k for k, v in taste.items() if v == highest]
['Limpets', 'Mussels']

>>> for i in taste.keys():
...     if taste[i] == highest:
...         print(i)
... 
Limpets
Mussels

答案 2 :(得分:0)

由于您有多个值是该集合的最大值,因此您需要在如何过滤掉具有相同值的所有键时有点聪明。

这更像是一种排序操作,而不是最大操作。

>>> taste = {"Mussels": 4, "Limpets": 4, "Prawn": 2, "Plankton":1}
>>> ordered_by_rating = sorted(list(taste.items()), key=lambda x: x[1], reverse=True)
>>> top_rating = max(ordered_by_rating, key=lambda x: x[1])[1]
>>> only_top = [x[0] for x in filter(lambda x: x[1] == top_rating, ordered_by_rating)]
>>> only_top
['Mussels', 'Limpets']

您可以通过减少必须经历的循环次数来压缩上述内容:

>>> [k for k,v in taste.items() if v == max(taste.values())]
['Mussels', 'Limpets']

答案 3 :(得分:0)

此解决方案使用的是Python3:

maxkeys = [k for k, v in taste.items() if v == max(taste.values())]