2016-12-11 3 views
-2

Python 3.4.4, Windows-8.1Python Variablen Referenzen nicht funktioniert

mit ich einige Probleme zu Variablen in Python zu behandeln. Ich habe ein Programm, das Referenzwörterbücher speichert. Dies wird in einer static.py-Datei gespeichert. Wenn ich das Referenzwörterbuch aus einer anderen .py-Datei ziehe, ändert sich die ursprüngliche Referenz.

static.py File 

dictionary_a = {'a': 'The sky is blue and {}.', 'b': 'Second sentence'} 

Main.py file 

from static.py file import dictionary_a 


dictionary_b = dictionary_a 

c = dictionary_b['a'].format('Yellow') 
print (c) 
print (dictionary_a['a']) 

output 
>> 'The sky is blue and Yellow.' 
>> 'The sky is blue and Yellow.' 

Ich möchte das Wörterbuch aus dem static.py verweisen, aber die ursprüngliche Variable intakt lassen. Also wird die ideale Ausgabe sein.

>> 'The sky is blue and Yellow.' 
>> 'The sky is blue and {}.' 
+0

'dictionary_a = { 'Der Himmel ist blau und {}. '} 'ist kein' dict', sondern ein 'set'. Es mag hier keine Rolle spielen, aber es wird verwirrend benannt. – Evert

+0

Der obige Code kann nicht funktionieren, da Sie 'format' auf einem' set' aufrufen, was zu einem 'AttributeError' führt; es gibt definitiv nicht die Ausgabe, die Sie zeigen. – Evert

Antwort

-1

Ich fand die Antwort. Wenn Sie versuchen, eine Kopie eines Wörterbuchs zu erstellen, müssen Sie dies explizit in Python tun, da die Verwendung von dictionary_b = dictionary_a auf dasselbe Wörterbuch verweist.

Um eine Kopie der richtige Weg zu schaffen wird:

dictionary_b = dict (dictionary_a)

oder

dictionary_b = dictionary_a.copy()

+1

Das mag wahr sein, aber Ihr ursprünglicher Code hat das nicht getan, was Sie sagen, also ist es im Allgemeinen schwer, Ihnen zu helfen, z. dictionary_b ['a']. format ('Yellow') hat keine Nebenwirkung auf das Wörterbuch, so dass das 'dictionary_a ['a']' immer noch '' Der Himmel ist blau und {}. '' ist. – AChampion

Verwandte Themen