【发布时间】:2020-09-07 14:56:57
【问题描述】:
我有一个字典,其中键代表组,值是元素列表(为简单起见,我们假设值是整数)。
这样的字典的一个例子,d,是:
d = {2: [0, 1, 7, 8, 9], 1: [2, 4], 4: [3], 3: [5, 6]}
我希望对这本字典进行多次随机抽样,其中样本将包括对第一组中的单个元素、第二组中的单个元素等的随机抽样。
简单的输出示例是:
[9, 2, 3, 5]
[1, 2, 3, 6]
[7, 4, 3, 6]
...
我可以遍历字典,d,M 次并遍历键和样本 1 元素,我想知道是否有更简单的方法,希望更有效,因为它将成为更大更复杂的算法。
天真的方法是:
ll = []
for i in range(10):
tmp = []
for k, l in d.items():
tmp.append(random.choice(l))
ll.append(tmp)
print(ll) # [[5, 6, 9, 7], [8, 4, 3, 7], [2, 1, 3, 7], [5, 1, 3, 7], [0, 4, 3, 7], [2, 1, 3, 7], [2, 6, 9, 7], [2, 1, 9, 7], [8, 4, 9, 7], [2, 1, 9, 7]]
我对字典并不严格,我也可以使用其他结构,但逻辑保持不变。
不胜感激。
【问题讨论】:
-
检查
random.sample或random.choice:docs.python.org/3/library/random.html -
@Mike67 是的,我对它们很熟悉,看看我的幼稚方法。我一直在寻找一种不同的方法。
-
您想要一个不使用
random库的选项? -
@Mike67 不,我想要一个不需要遍历键的选项。
标签: python dictionary random