从变量值命名字典

时间:2014-11-02 08:34:53

标签: python dictionary

如何从变量值中为字典命名?

我尝试构建的一个例子:

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>

1 个答案:

答案 0 :(得分:2)

从评论中的讨论中可以清楚地看到,您正在尝试创建一个名称包含在另一个变量中的变量。

以下显示了如何做到这一点:

d = {}
d["name"] = "Apache Web Server"
d["category"] = "web"
d["version"] = "2.2.14-4"

locals()["apache"] = d

print apache

这会创建一个局部变量,但也要查看globals()