Python:从字典中具有最大值的键列表中随机选择

时间:2018-02-13 18:41:13

标签: python numpy dictionary

通过执行以下操作,我可以获得具有最大值的第一个出现的密钥:

# history = {1: 1.0, 3: 5.0, 4: 5.0}
max_key = max(history, key=lambda key: history[key])

总会让我回复3.我如何更改max_key以便随机选择键3或4?我尝试用np.random.choice()包装它,但这给了我一个错误。

4 个答案:

答案 0 :(得分:1)

只需在原始方法后添加一步:

import random
max_key = max(history, key=lambda key: history[key])
random.choice([i for i, j in history.items() if j == history[max_key]])

答案 1 :(得分:1)

首先,找到最大值:

>>> history = {1: 1.0, 3: 5.0, 4: 5.0}
>>> max_val = max(history.values())

然后获取具有最大值的键列表:

>>> max_keys = [k for k in history if history[k] == max_val]

然后从该列表中随机选择:

>>> import random
>>> random.choice(max_keys)
4
>>> random.choice(max_keys)
3

答案 2 :(得分:0)

np.random.choice([key for key in history.keys() if history[key]==max(history.values())])

答案 3 :(得分:0)

您还可以使用.items()

import random  # you don't need numpy here
max_value = max(history.values())
random.choice([
    key
    for key, value in history.items()
    if value == max_value
])