从文件导入时如何使用权重?



这是我的程序,通过weightList我希望它使用在我的。csv文件中定义的权重。但它给了我错误:ValueError:权重的数量不匹配的人口

with open(f"{file}", "r") as f:
for i in f:
list1 = i.split(",")
idList = list1[0]
weightList = random.choices(list1, weights=(list1[6]))

如何解决这个问题?提前感谢

weight参数也应该是具有list1长度的list
您只是给weight一个元素(list1[6])。
你应该给出weights的列表。
例如,如果列表有8个元素,如ID,Entity,Name,Size,Zone,Metric,FileName,Weight。必须给weight参数一个长度为8的列表,例如:[1,3,5,2,1,3,2,1]

weights = [1,3,5,2,1,3,2,1]
weightList = random.choices(list1, weights=weights)

根据您下面的评论更新:

从文件中,我只需要IDweight

如你所说;每行有10元素,您只需要每行的IDweight
ID是该行的第一个元素(索引为0)和第8个元素(索引为7),您可以使用split():

获取它们
[...]
elements = i.split(",")
ID , weight = elements[0] , elements[7]
[...]

你也提到过:

最后输出应该只有ID基于weight年代。

您可以根据weight创建dictionary来容纳ID。实际上你根本不需要random.choices()

ids_based_on_weights = dict()
with open(f"{file}", "r") as f:
for line in f:
list1 = line.split(",")
id, weight = list1[0], list1[7]
if weight in ids_based_on_weights:
ids_based_on_weights[weight].append(id)
else:
ids_based_on_weights[weight] = [id]
print(ids_based_on_weights)   # output: IDs based on their Weights

相关内容

  • 没有找到相关文章

最新更新