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

2024-09-29 04:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字典,它包含不同键的多个最大值。我试着用密码:

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

但它只给我贻贝或帽贝,取决于哪一个先到。我尝试设置最高值,然后迭代我的键,对于每个键,我的值如下:

^{pr2}$

但这似乎行不通,因为你不能像我字典里的值那样通过整数进行交互。那么,最干净、最简单的方法是什么


Tags: key密码get字典整数maxprintpr2
3条回答

我会这样做:

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

你可以使用列表理解。在

>>> 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']

或者

^{pr2}$

由于您有多个值是集合的最大值,所以您需要在如何过滤出具有相同值的所有关键点时稍微聪明一点。在

这更像是一个排序操作,而不是max操作。在

>>> 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']

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

^{pr2}$

相关问题 更多 >