我想根据变量中传递的值从file2.py访问file1.py中创建的字典。两个文件都在同一目录中。
dict_test_1 = {'a':1, 'b': 2}
dict_test_2 = {'a':11, 'b': 12}
import file1
def fun(dict_name):
var_a = file1.dict_name['a'] ## I wanted an equivalent of file1.dict_test_1['a'] or file.dict_test_2['a']
有趣(决定来自运行时的变量)#Calling function
我需要在运行时通过'dict_name'访问file1.py中创建的字典,但问题是python实际上看到'dict_name',因为它是file1.py中定义的字典之一,而不是取'dict_value的值'变量在函数'fun'中传递并寻找相应的字典。
任何解决方案??
答案 0 :(得分:1)
我会在这些方面提出一些建议:
def fun(dict_name):
selected_dict = {'dict_test_1': file1.dict_test_1,
'dict_test_2': file1.dict_test_2 }
var_a = file1.selected_dict[dict_name]['a']
答案 1 :(得分:1)
如果您需要按值访问python对象,则必须处理vars
或object__dict__
的kludge。
您有一个字符串dict_name
,它对应于模块file1
内的python对象的名称。如果file1
是字典,那么您需要file1[dict_name]
,对吧? __dict__
进来的地方。
def fun(dict_name):
selected_dict = file1.__dict__[dict_name]
var_a = selected_dict['a']
这类似于使用内置的vars
编写的。最好解释on this SO question
def fun(dict_name):
selected_dict = vars(file1)[dict_name]
var_a = selected_dict['a']