我在用一本大字典,出于某种原因,我还需要从字典中随机抽取一些小样本。我怎样才能得到这个小样本(例如长度2)?
这是一个玩具模型:
dy={'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
我需要在dy上执行一些包含所有条目的任务。让我们说,为了简化,我需要将所有的值相加:
s=0
for key in dy.key:
s=s+dy[key]
现在,我还需要对dy的随机样本执行相同的任务;为此,我需要dy的密钥的随机样本
sam=list(dy.keys())[:1]
这样我就有了一个字典的两个键的列表,它们是随机的。所以,回到may task,我需要在代码中做的唯一更改是:
s=0
for key in sam:
s=s+dy[key]
关键是我不完全理解dy.keys是如何构造的,因此我无法预见任何未来的问题
将
range(10)
替换为一些来自numphy的随机样本{v:rows[v] for v in [list(rows.keys())[k] for k in range(10)]}
以你的例子:
然后,所有值的总和更简单地表示为:
如果不是内存限制,您可以使用:
或者,由于
random.sample
可以接受类似set
的对象,那么:或者使用:
另一种方法是使用
heapq
,例如:输出:
相关问题 更多 >
编程相关推荐