2013-06-05 66 views
-1

我有一个100个字典的字典,我必须创建10个分组的10个元素的那个dicionary。一个组的元素必须从字典的元素中随机选择。我该怎么做?字典元素的随机分组

+0

值或键?或两者? –

+0

我是sry,我不明白。你有一个有100个条目的巨大字典。你想把它分成10个单词,每个单词包含10个条目? – pypat

+0

两者。字典的结构是{id:(element1,element2,element3)}。编号从0到99.因此,在我的组中,我必须选择一个从0到99的随机数字并从字典中获取此元素。这样,直到得到10组10个元素。 –

回答

1

你可以使用一个发电机来产生随机值:

import random 

def random_group(d, size=10): 
    keys = list(d.keys()) 
    random.shuffle(keys) 
    for i in range(0, len(keys), size): 
     yield [(key, d[key]) for key in keys[i:i + size]] 

由此产生的10(key, value)对组在一个时间:

for group in random_group(your_dictionary): 
    print group 

可以调节功能产生只是按键,只是值或字典代替:

yield keys[i:i + size]       # list of keys 
yield [d[key] for key in keys[i:i + size]]  # list of values 
yield {key: d[key] for key in keys[i:i + size]} # dictionary 
+0

我试着它,我得到:TypeError:shuffle()需要至少2个参数(1给出)...无论如何,使用这种方法,有可能在一个以上grupo重复一个元素,不它? –

+0

最重要的要求是,字典中的一个元素不能在组 –

+0

@ user1068980中重复:错误修正(忘了实际指定我们正在洗牌)。不,不会有任何重复。 –