【发布时间】:2013-11-09 22:27:09
【问题描述】:
我想从给定的字典中创建一个包含 3 个选项的样本。字典长度可以是可变的。
我在之前的代码中所做的是创建一个加权值字典,在本例中是 12 个值和键。
但无法从我的 random.choice 中检索样本。
使用 python 3
我的字典是
dictionary = {'Three': 14.4, 'Five': 11.2, 'Two': 14.4, 'Thirteen': 3.3, 'One': 17.6, 'Seven': 3.3, 'Nine': 3.3, 'Ten': 3.3, 'Twelve': 3.3, 'Eight': 3.3, 'Four': 12.0, 'Six': 10.4}
我尝试从字典的随机选择中检索 3 个样本。
my_sample = random.sample(random.choice(dictionary), 3)
print(my_sample)
但是得到这个错误
Traceback (most recent call last):
File "c_weights.py", line 38, in <module>
my_sample = random.sample(random.choice(dictionary), 3)
File "/usr/lib64/python3.3/random.py", line 252, in choice
return seq[i]
KeyError: 11
试图得到
My_sample = ('One', 'Four','Twelve') 例如。
编辑: 只是要清楚我的工作目标是什么。
('One', 'Four','Twelve')
('Two', 'One','Six')
('Four', 'Two','Five')
('One', 'Eight','Two')
('Thirteen', 'Three','Six')
如此独特的集合基于字典中的加权概率(或元组,如果更好的话)
【问题讨论】:
-
我没有得到这个加权部分。您希望
"Three"比"Thirteen"更频繁地成为样本成员吗?random.sample和random.choice都不会这样做,但这就是人们说“加权随机选择”时通常所追求的。 -
@DSM 是的,我希望从样本中抽取的“一”按我提供的权重按比例超过“十三”。
-
@kobejohn 所以我应该创建一个元组而不是创建字典?我认为字典更好,因为键是我希望检索集合的重要部分。
标签: python random python-3.x dictionary