Python选项,获取/返回选定的Wight值



我使用。选择随机选择一个具有权重值的值。

是否可以将使用过的权重值存储到变量中?

var = random.choices(population=A, B, C, weights=[20, 20, 60])

谢谢!

只需在将其提供给函数之前将其存储即可。您还必须更改分配人口的方式。你的代码看起来更像这样:

my_weights = [20, 20, 60]
my_population = ["A", "B", "C"]
var = random.choices(population = my_population, weights = my_weights)

像这样,代码应该可以工作,然后您可以访问my_weightsmy_population中的权重和总体。

如果你想访问所选的权重,你可以这样做:

chosen_weight = [weight for i, weight in enumerate(my_weights) if my_population[i] in var]

您只需要一种方法来为您的选择增加权重。为此,dataclass会很好地工作。

from random import choices
from dataclasses import dataclass
@dataclass
class Choice:
value: int
weight: int
a = Choice(value=3, weight=20)
b = Choice(value=4, weight=20)
c = Choice(value=5, weight=60)
all_choices = choices(population=(a, b, c), weights=[a.weight, b.weight, c.weight])
first_choice = all_choices[0]
print(first_choice.value, first_choice.weight)

您可以在使用之前存储它,然后将变量传递给权重参数

myweights = [20, 20, 60]
var = random.choices(population=[A, B, C], weights=myweights)

然而,random.choices()只返回从总体中选择的元素列表,因此之后无法获得权重。

最新更新