簡體   English   中英

Python:從字典列表中隨機選擇具有字典最大值的鍵

[英]Python: randomly select from list of keys with maximum value in 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()包裝它,但這給了我一個錯誤。

在您的原始方法之后只需添加一個步驟:

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

首先,找到最大值:

>>> 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
np.random.choice([key for key in history.keys() if history[key]==max(history.values())])

您也可以使用.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
])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM