根据值随机选择字典键

时间:2019-12-03 19:16:09

标签: python dictionary random probability

我有一本这样的字典:{"one": 5, "two": 1, "three": 25, "four": 14}

我想从字典中选择一个与值成比例的键,即“三个”的机会最大,然后是“四个”,然后是“一个”,然后是“两个”。我看过this问题,但这似乎特定于何时数字加起来为1。

我真的不知道如何开始,将不胜感激。

1 个答案:

答案 0 :(得分:2)

random.choicesweights参数一起使用:

  

random.choices(人口,权重=无,*,cum_weights =无,k = 1)

     

返回从总体中选择的k大小的元素列表   替代。如果填充为空,则引发IndexError。

     

如果指定了权重序列,则根据   相对权重。或者,如果cum_weights序列为   给定,则根据累积权重进行选择

import random

d = {"one": 5, "two": 1, "three": 25, "four": 14}
keys = list(d.keys())
values = list(d.values())
random_key = random.choices(keys, weights=values)

print(random_key)
# ['three']