从字典中,根据机会百分比返回键

时间:2018-12-11 12:22:54

标签: python python-3.x

比方说,我有一个由字符串组成的字典及其出现的几率,如下所示:

{"a": 0.2, "b": 0.6, "c": 0.1, "d": 0.1}

我如何使它返回"a" 20% of the time"b" 60% of the time"c" and "d" each 10% of the time

2 个答案:

答案 0 :(得分:0)

您需要random.choices

import random
x = {"a": 0.2, "b": 0.6, "c": 0.1, "d": 0.1}
print(random.choices(list(x.keys()), list(x.values()), k=1)[0])

修改

要使其可重用,请编写一个函数:

def get_number(x):
    return random.choices(list(x.keys()), list(x.values()), k=1)[0]

import random
x = {"a": 0.2, "b": 0.6, "c": 0.1, "d": 0.1}
print(get_number(x))

random.choices

  1. 第一个参数是应返回的值的列表
  2. 第二个参数是生成以参数形式传递的值的权重(或概率)

答案 1 :(得分:0)

尝试我的解决方案:

st = {"a": 0.2, "b": 0.6, "c": 0.1, "d": 0.1}
g = dict((x, str(int(st[x] * 100)) + "% of the time") for x in st)
print(g)

{'a': '20% of the time', 'b': '60% of the time', 'c': '10% of the time', 'd': '10% of the time'}