2016-03-21 6 views
-1

Ich versuche herauszufinden, wie man ein zufälliges Wörterbuch in Python 2.7 auswählen. Wenn ich drei Wörterbücher als solche haben:Wählen Sie ein zufälliges Wörterbuch in Python 2.7

monster1 = {'name' : 'kobold', 'AC' : 5, 'HP' : 8} 
monster2 = {'name' : 'spider', 'AC' : 6, 'HP' : 10} 
monster3 = {'name' : 'ogre', 'AC' : 6, 'HP' : 12} 

Gibt es eine Möglichkeit, um zufällig einen dieser drei Wörterbücher zu wählen, um an anderer Stelle in meinem Programm zu verwenden?

Vielen Dank im Voraus für jede Hilfe.

+3

Anstatt die Dicts ihren eigenen Namen zuzuordnen, erstellen Sie eine Liste daraus. Sie hätten also eine Liste mit 3 Dicts, aus denen Sie ganz einfach mit ['random'] (https://docs.python.org/2/library/random.html) – Sevanteri

+0

nach dem Zufallsprinzip auswählen können. Da gibt es nur 3 Wörterbücher zu wählen, gibt es nicht viel Zufälligkeit, aber Sie könnten einen Wert zwischen 1 und 3 generieren und eine if else-Anweisung schreiben, um ein Wörterbuch basierend auf dieser Zahl auszuwählen. –

+0

Danke für alle Antworten. Ich weiß es wirklich zu schätzen, dass sich jeder die Zeit nimmt, das zu beantworten. –

Antwort

4

Sie können sie in eine Liste einfügen und dann random.choice() verwenden, um eine von ihnen zufällig zu erhalten. Zum Beispiel:

import random 
random_dict = random.choice([monster1, monster2, monster3]) 
2

Verwendung random.choice wie diese

import random 

monster1 = {'name' : 'kobold', 'AC' : 5, 'HP' : 8} 
monster2 = {'name' : 'spider', 'AC' : 6, 'HP' : 10} 
monster3 = {'name' : 'ogre', 'AC' : 6, 'HP' : 12} 

choices = [monster1, monster2, monster3] 

print(random.choice(choices)) 
-1

+1 in Übereinstimmung mit Kichik Antwort.

Wenn Sie wirklich darauf eingestellt sind, keine Liste zu verwenden, wird Ihnen der Befehl eval das gewünschte Ergebnis liefern.

from random import randint 

eval('monster'+str(randint(1,3))) 
{'AC': 6, 'HP': 12, 'name': 'ogre'} 
eval('monster'+str(randint(1,3))) 
{'AC': 5, 'HP': 8, 'name': 'kobold'} 
+2

Anstatt 'eval' zu verwenden, benutzen Sie einfach' globals() ['monster' + number] ' –

0

Sie könnten die Wörterbücher in einem Array setzen und dann einen zufälligen Index auswählen.

from random import choice 
monster1 = {'name' : 'kobold', 'AC' : 5, 'HP' : 8} 
monster2 = {'name' : 'spider', 'AC' : 6, 'HP' : 10} 
monster3 = {'name' : 'ogre', 'AC' : 6, 'HP' : 12} 
monsters = [monster1, monster2, monster3] 
randmonster = choice(monsters)