Python 字典对象实例化 NameError

Python Dictionary Object Instantiation NameError

我正在制作一个控制台应用程序,它可以加载充满西班牙语单词和定义的不同词典,我的想法是我想在这个模块中制作我的词典 class 的所有对象,然后导入它们通过一个 dict_of_dicts 变成 main.py。而不是像这样写出每个实例化每个单独的对象:

animals_dict = Dictionary('animals') 

我想遍历 dict_of_dicts 并创建它们。现在,当我这样做时,我得到一个 NameError,因为这些对象尚未定义,我想这是有道理的,但我想知道这里是否有一种工作可以通过循环来制作这些对象,而不是仅仅将它们一个一个地写出来.

# list of dictionaries loaded into main.py at runtime

from dict_class import Dictionary

dict_of_dicts = {'animals':animals_dict, 'nature':nature_dict, 'irregulars':irregulars_dict,
         'clothes':clothes_dict, 'foodbev':foodbev_dict, 'phrases':phrases_dict,
            'verbs':verbs_dict,'adjectives':adjectives_dict,'future':future_dict,'past':past_dict,
             'wotd':wotd_dict}

for k,v in dict_of_dicts:
    v = Dictionary(k)  #k=self.name
    print(v) #v=object
names = ['animals', 'nature', 'foodbev']  # dict's names
dict_of_dicts = {}

for name in names:
    dict_of_dicts[name] = Dictionary(k)

假设你有一个名字列表['animals', 'nature', 'irregulars'] #etc

你可以遍历它来创建一个新字典

my_dicts = {}
names = ['animals', 'nature', 'irregulars']
for name in names:
    my_dicts[name] = Dictionary(name)

或者作为理解

my_dicts = {name: Dictionary(name) for name in names}

除了对象尚不存在之外,您会 运行 遇到的另一个问题是,当通过 dict.items 遍历字典的项目时,对该名称进行赋值实际上不会修改字典.

for key, value in some_dict.items():
    value = 'new' # Bad. Does not modify some_dict

for key in some_dict:
    some_dict[key] = 'new' # Good. Does modify some_dict