如何从变量值中为字典命名?
我尝试构建的一个例子:
apache['name'] = "Apache Web Server"
apache['category'] = "web"
apache['version'] = "2.2.14-4"
但是,我事先并不知道字典的名称,而是以变量的形式出现,例如: dname = 'apache'
。 Dname从文本文件中解析。逻辑是:"分隔符后面的第一个单词是dict_name;下一行 n 行分为dict_name的键:值对;跳到下一个分隔符;重复直到结束"。
什么不起作用:
key = 'category'
value = 'web'
dname[key] = value
TypeError: 'str' object does not support item assignment
eval(dname)[key] = value
NameError: name 'apache' is not defined
getattr(dname, '__contains__')[key] = value
以及来自dir(dname)
的关键字的类似尝试仅产生错误。 (因为getattr仅用于函数和模块?)
从How to create a dictionary based on variable value in Python我引入了vars()
,但是它想要字典存在吗?
vars(dname)[key] = value
TypeError: vars() argument must have __dict__ attribute
这个问题的标题是我发现的最接近的声音,但答案是关于使用键的变量,而不是dict名称:Create a dictionary with name of variable < / p>
答案 0 :(得分:2)
从评论中的讨论中可以清楚地看到,您正在尝试创建一个名称包含在另一个变量中的变量。
以下显示了如何做到这一点:
d = {}
d["name"] = "Apache Web Server"
d["category"] = "web"
d["version"] = "2.2.14-4"
locals()["apache"] = d
print apache
这会创建一个局部变量,但也要查看globals()
。