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
我正在制作一个控制台应用程序,它可以加载充满西班牙语单词和定义的不同词典,我的想法是我想在这个模块中制作我的词典 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