如何从 Python 中字典的最高值中随机打破平局?

Pot*_*ler 2 python random dictionary list python-3.x

我想返回字典中具有最高值的键,如果有平局,则随机选择其中一个。我知道如何获得最大值,但无法弄清楚如何打破平局。

max(result, key = result.get) 
Run Code Online (Sandbox Code Playgroud)

这让我得到最大值,但如果字典有平局,那么它只会给我它遇到的第一个

鉴于字典 {'banana': 3, 'apple': 2, 'cherry': 1, 'orange': 3}

输出必须要么给出banana要么orange,但随机。

Dea*_*ool 5

首先max从字典中获取值

import random
maxValue = max(result.values())
Run Code Online (Sandbox Code Playgroud)

然后list使用List Comprehensions收集所有具有最大值的键

keys = [key for key, value in result.items() if value == maxValue]
Run Code Online (Sandbox Code Playgroud)

现在从 keys

choice = random.choice(keys)
Run Code Online (Sandbox Code Playgroud)