如何在运行时从其他文件访问字典

时间:2014-12-09 00:15:09

标签: python dictionary

我想根据变量中传递的值从file2.py访问file1.py中创建的字典。两个文件都在同一目录中。

File1.py看起来像

dict_test_1 = {'a':1, 'b': 2}

dict_test_2 = {'a':11, 'b': 12}

file2.py看起来像:

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'中传递并寻找相应的字典。

任何解决方案??

2 个答案:

答案 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对象,则必须处理varsobject__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']