2017-12-08 3 views
-4

Es gibt eine garden.fruitWarum kann ich den Wert nicht aus dem Wörterbuch abrufen?

garden.fruits = {"fruit" : "apple"} 

Und jetzt wollen genannt Wörterbuch I aus Wörterbuch den Wert des Schlüssels „Frucht“ zu bekommen. Der Code ist unter

#!/usr/bin/python 
#-*-coding:utf-8 -*- 
garden.fruits = {"fruit" : "apple"} 
print garden.fruits['fruit'] 

Aber ich bekomme einen Namen Fehler

NameError: name 'garden' is not defined 

ich die Variation Namen kennen sollte nicht schließen die Punkt, aber was, wenn ich diese Variante Namen verwenden möchten, und bekommen die Wert aus dem Wörterbuch? Danke

+1

Python-Variablen Namespaces nicht zulassen '.' Ich bin mir ziemlich sicher. Verwenden Sie stattdessen einen Unterstrich. Was passiert, wenn Sie 'Garten drucken'? – simplycoding

+1

Probieren Sie stattdessen "fruits = {" fruit ":" apple "}'. Dots sind auf diese Weise nicht erlaubt. – pylang

+0

Können Sie uns die vollständige Fehlermeldung zeigen? Ich bin ziemlich sicher, dass es erhoben wird, wenn Sie versuchen, 'garten.fruits = was auch immer 'zu tun ... –

Antwort

2

Die . würde nur verwendet werden, wenn Sie zuvor die Datei oder das Paket garden in den aktuellen Namespace importiert hatten. Zum Beispiel:

In garden.py:

fruits = {"fruit" : "apple"} 

In main.py:

import garden 
print garden.fruits['fruit'] 

Wenn Sie jedoch nicht die Datei oder das Paket importieren garden, können Sie nicht . verwenden. Stattdessen Früchte erklären:

fruits = {"fruit" : "apple"} 
print(fruits['fruit']) 
+1

Das ist nicht der einzige Weg, es könnte Klasse sein wie 'Klasse Garten: Früchte = {" Obst ":" Apfel "}' (natürlich nicht empfohlen) –

+0

Danke für Ihre Hilfe :) – Michael

0

Falls Sie wirklich einen Punkt in Ihrem Variablennamen verwenden müssen, können Sie eine leere Klasseninstanz definieren.

+0

Danke, das funktioniert :) – Michael

Verwandte Themen