【问题标题】:How to randomly select a key from a dictionary based on it's float value [duplicate]如何根据浮点值从字典中随机选择一个键[重复]
【发布时间】:2019-04-16 14:56:48
【问题描述】:

假设我有一个字典

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

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

【问题讨论】:

  • 你可以使用numpy.random.choice - 它有p(概率)参数

标签: python random probability


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 2016-09-06
    • 2017-03-30
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多