2017-05-21 12 views
0

私はキー/値のペアをリストするためにこのintを持っています。辞書:キーのリストからのランダムなキーとランダムな数

PrimNeighboursDict = {883: [880, 881, 884], 884: [883, 885], 885: [884, 886, 889], 886: [885, 889, 887, 888]}

私はランダムキーの一定数を選択すると、各選択されたキーのリストについては、私はこれらのリストからランダムにアイテムの特定の番号を選択します。

すべてのヘルプははるかに高く評価されるだろう

import random 

PrimNeighboursDict = {883: [880, 881, 884], 884: [883, 885], 885: [884, 886, 889], 886: [885, 889, 887, 888]} 
randomPrimitiveFilter = node.evalParm('RandomPrimitiveFilter') #a slider to control the number of selected keys 

dictlength = len(PrimNeighboursDict) #dictionary length so total number of primitives 

for primitives,neighbours in PrimNeighboursDict.items(): 
    d = PrimNeighboursDict.fromkeys(range(dictlength)) 
    keys = random.sample(list(d), randomPrimitiveFilter) 

randomly selected keys: 
883,885 
randomly select number of items from each key's list: 
883: 881 
885: 884,889 

は、これは私がこれまでのところ、私はランダムに選択されているキーを持っているものです。

答えて

0

私はスライダーを持っていないので、スライダーの値の代わりにリテラルの値2を使用しました。私があなたの質問を正しく理解したら、2つのステップが必要です。

  1. 辞書から2つのランダムキーを選択します。
  2. 選択したキーごとに、関連付けられた リストから2つのランダムな値を選択します。

ので、

randomPrimitiveFilter = 2 
# Step 1 
sample_keys = random.sample(PrimNeighboursDict.keys(),randomPrimitiveFilter) 
# Step 2 
for k in sample_keys: 
    sample_values = random.sample(PrimNeighboursDict[k],randomPrimitiveFilter) 
    print k, sample_values 

これは私を与える(もちろん、すべての運転意志が異なる)

886 [885, 887] 
884 [883, 885] 
+0

素晴らしいそんなにありがとう – 212A

関連する問題