2 回答

TA贡献1799条经验 获得超8个赞
你需要 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
第一个参数是应该返回的值列表
第二个参数是生成传入参数的值的权重(或概率)

TA贡献2051条经验 获得超10个赞
试试我的解决方案:
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'}
添加回答
举报