2017-05-21 3 views
0

Ich habe dieses Int, um Schlüssel/Wert-Paare Wörterbuch aufzulisten.Wörterbücher: Zufällige Tasten und zufällige Anzahl von Elementen aus der Liste der Schlüssel

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

Ich möchte eine bestimmte Anzahl von Tasten, um zufällig und dann für jede Liste der ausgewählten Schlüssel, ich möchte aus diesen Listen zufällig eine bestimmte Anzahl von Elementen auszuwählen.

z.B.

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

Dies ist, was ich bisher habe, habe ich Schlüssel zufällig ausgewählt:

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) 

Jede Hilfe sehr geschätzt werden würde.

Antwort

0

Ich habe den Literalwert 2 anstelle Ihres Schiebereglers verwendet, weil ich den Schieberegler nicht habe. Wenn ich deine Frage richtig verstanden habe, brauchst du 2 Schritte.

  1. Wählen Sie 2 zufällige Schlüssel aus dem Wörterbuch.
  2. Wählen Sie für jeden ausgewählten Schlüssel zwei zufällige Werte aus der zugehörigen -Liste aus.

So

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 

Das gibt mir (jeden Lauf natürlich unterscheiden)

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

genial vielen Dank – 212A

Verwandte Themen