【问题标题】:Choose dictionary key randomly based on value [duplicate]根据值随机选择字典键[重复]
【发布时间】:2019-12-03 19:16:09
【问题描述】:

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

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

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

【问题讨论】:

  • @PeterO。也许,我会调查一下
  • 如果除以所有值的总和,则可以使数字加起来为 1。 sum(mydict.values())

标签: python dictionary random probability


【解决方案1】:

random.choicesweights 参数一起使用:

random.choices(population, weights=None, *, cum_weights=None, 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']

【讨论】:

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