如果我用一个简单的例子来解释这种情况会更好,我有一个文件包含一些像这个例子的字典:
文件1:
dict1 = {"a": "dictA", "b": "dictB"}
dictA = {1: 100, 2:200 }
file2的:
import file1
mydict = file1.dict1["a"] #will be string "dictA"
print file1.mydict #here AttributeError:
当我尝试时:
print file1.mydict
输出只是:
dictA
我也试过了:
import file1
print file1.file1.dict1["a"] #here AttributeError again:
我得到了AttributeError我想从file1打印dictA,但显然python无法找到mydict,我也是这样尝试的:
有没有办法进入第二本字典? 感谢
答案 0 :(得分:2)
在你的第一个例子中:
您正在file1
内处理file2
中定义的内容。因此,当您执行mydict = file1.dict1["a"]
时,您会在mydict
中获得file2
,而不是file1
。所以你应该能够像这样打印出来:
import file1
mydict = file1.dict1["a"] #will be string "dictA"
print mydict
请注意那里的print语句中缺少file1.
。这是因为mydict
是在file2
内创建的,不会写入file1
。
在你的第二个例子中:
file1
内没有定义任何名为file1
的内容。如果你确实在file1
中有这样一个对象,它有一个名为dict1
的属性,那么该调用可以正常运行。
答案 1 :(得分:1)
方法1
修改file1:
dictA = {1: 100, 2:200 }
dict1 = {"a": dictA, "b": dictB}
尝试:
import file1
mydict = file1.dict1["a"]
方法2
不要修改文件1.使用eval()函数按名称获取变量的值。
mydict = eval('file1.' + file1.dict1["a"])