2017-12-08 24 views
-4

garden.fruitなぜ辞書から値を取得できないのですか?

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

そして今、私が辞書からキー「フルーツ」の値を取得したいと呼ばれる辞書があります。 コードは

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

を下回っている。しかし私は、このバリエーション名を使用して取得したい場合は、バリエーション名がドットが、何を含めるべきではありません知っている

NameError: name 'garden' is not defined 

名エラーを取得辞書からの価値?ありがとう

+1

Python変数の名前空間は '.'を許可しません。私はかなり確信しています。代わりにアンダースコアを使用します。 'プリントガーデン'をするとどうなりますか? – simplycoding

+1

代わりに 'fruits = {" fruit ":" apple "}'を試してみてください。ドットはそのように許可されていません。 – pylang

+0

完全なエラーメッセージを表示できますか?私はあなたが 'garden.fruits =何でも'しようとしているときにそれが上げられていると確信しています... –

答えて

2

.は、ファイルまたはパッケージgardenを以前の名前空間にインポートした場合にのみ使用されます。例えば:garden.py

main.py

fruits = {"fruit" : "apple"} 

:あなたは、ファイルまたはパッケージgardenをインポートしていない場合

import garden 
print garden.fruits['fruit'] 

しかし、あなたは.を使用することはできません。代わりに、果物を宣言します。場合

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

これは唯一の方法ではなく、 'class garden:fruits = {" fruit ":" apple "}'(もちろんアドバイスされていません)のようなクラスになる可能性があります –

+0

助けてくれてありがとうございました:) – Michael

0

は、あなたが本当にあなたの変数名にドットを使用する必要がある、あなたは空のクラスのインスタンスを定義することができます。

>>> class Garden: 
...  pass 
... 
>>> garden = Garden() 
>>> garden.fruits = {"fruit" : "apple"} 
>>> garden.fruits['fruit'] 
'apple' 
+0

ありがとう、 – Michael

関連する問題