2016-05-12 2 views
0

Ich versuche, Python eine Zeichenfolge aus einer Liste nach dem Zufallsprinzip zu nehmen und dann diese Zeichenfolge verwenden, um festzustellen, welche Variable mit dem gleichen Namen 1 hinzufügen. Ich kann ein Wörterbuch nicht verwenden, weil ich die Variablen in anderen Modulen verwende.einen String aus einer Python-Liste nehmen und damit eine Variable gleichen Namens aktualisieren?

Dies ist, was ich für ein Beispiel haben:

import random 

item1 = 0 
item2 = 0 
item3 = 0 

items = ("Item1","Item2","Item3") 
item = random.choice(items) 

#I want it to find the variable of the same name and then add 1 to said variable 
#depending on what item is chosen to be "item". 
+0

Bitte tun Sie dies nicht, sondern verwenden Sie stattdessen ein Wörterbuch. – Selcuk

+0

Wie bereits erwähnt, kann ich kein Wörterbuch verwenden, da Code in anderen Modulen verwendet wird, die die von mir verwendeten Variablen verwenden. – ManxFox

+0

Verwenden Sie auch keine globalen Variablen, es sei denn, dies ist absolut notwendig. Fix die anderen Module auch, wenn Sie gerade dabei sind. –

Antwort

0

Da die Kommentare bereits erwähnt, gehen Sie bitte nicht, dass es eine schlechte Praxis ist. Sie sollten den Code in Ihren anderen Modulen ändern, um nach dem Wörterbuch und nicht nach diesen Variablen zu suchen. Aber wenn Sie wirklich haben, geht dieser Code, wo Ihre Kommentare sind:

exec(item.lower() + ' += 1') 
+0

Verwenden Sie niemals 'eval' oder' exec', das ist eigentlich für den internen Gebrauch gedacht. – Nishant

+0

@Nishant ja, ich stimme zu, ich habe nur eine Antwort gegeben, wie er es wollte. Wenn er nicht auf unsere Warnungen hört, dann ist es nicht meine Schuld. –

0

Wenn Sie nicht Wörterbuch verwenden können, ist eine Option, die Einheimischen verwenden setattr:

Import Zufalls

item1 = 0 
item2 = 0 
item3 = 0 

items = ("Item1","Item2","Item3") 
item = random.choice(items) 

locals()[item.lower()] += 1 
0

Was Sie stattdessen tun könnten, ist ein Wörterbuch (assoziative Container): Es funktioniert mit einem Schlüssel-> Wert-System. Hier ist der Name Ihrer Variablen der Schlüssel, und die Nummer, die sie enthält, ist der Wert.

Etwas wie:

dict = {'Item1': 0, 'Item2': 0, 'Item3': 0} 
item = random.choice(dict.keys()) 

Hoffe, es hilft.

Verwandte Themen