如何根据字典的浮点值从字典中随机选择一个键[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

假设我有一个词典

{'option one': 5.0, 'option two': 5.0, 'option three': 10.0}

如何根据上述概率随机选择一个密钥(即,选项一和二将选择25%。选项3将有50%被选中的机会)

python random probability
1个回答
1
投票

作为一个班轮:

import random

random.seed(100)
d = {'option one': 5.0, 'option two': 5.0, 'option three': 10.0}
picked = random.choices(*zip(*d.items()))[0]
print(picked)
# option one

更多细分:

import random

random.seed(100)
d = {'option one': 5.0, 'option two': 5.0, 'option three': 10.0}
# Key-value pairs in dictionary
items = d.items()
# "Transpose" items: from key-value pairs to sequence of keys and sequence of values
values, weights = zip(*items)
# Weighted choice (of one element)
picked = random.choices(values, weights)[0]
print(picked)
# option one

注意在Python 3.6上添加了random.choices(与random.choice不同,它提供了weights参数)。

© www.soinside.com 2019 - 2024. All rights reserved.