def sample_dict(dictionary, sample_size):
"""Return a randomly sampled frequency dict"""
new_dict = dict()
num_to_sample = sample_size
num_to_process = sum(itervalues(dictionary))
for (k, v) in iteritems(dictionary):
for i in range(v):
if random.random() < num_to_sample / num_to_process:
new_dict[k] = new_dict.get(k, 0) + 1
num_to_sample -= 1
num_to_process -= 1
if num_to_sample == 0:
break
else:
continue
break
if num_to_sample > 0:
raise ValueError(u'Not enough elements in dictionary')
return new_dict
评论列表
文章目录