获取字典的随机子集

11 浏览
0 Comments

获取字典的随机子集

我有一个非常大的字典,我想提取一个子样本,然后对其进行迭代。我尝试了以下代码:

import random
dictionary = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
keys = random.sample(dictionary, 3)
sample = dictionary[keys]

但是它不起作用:

Traceback (most recent call last):
  File "[..]/foobar.py", line 4, in 
    sample = dictionary[keys]
TypeError: unhashable type: 'list'

这段代码可以工作:

import random
dictionary = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
keys = random.sample(dictionary, 3)
sample = {key: dictionary[key] for key in keys}

这似乎有点啰嗦:我希望能有一种矢量化的方式来构建新的字典。然而,这是正确/最符合Python风格的方法吗?另外,如果我想在这个样本上进行迭代,我应该这样做:

for key, value in sample.iteritems():
    print(key, value)

0