所以假设我有一个包含不同键的多个最大值的字典。我试着使用代码:
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)
但这似乎不起作用,因为你不能像我字典中的值那样通过整数进行交互。那么最简洁,最简单的方法是什么呢?
答案 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())]