根据变量值命名字典
我该如何用一个变量的值给字典命名呢?
我想做的事情是这样的:
apache['name'] = "Apache Web Server"
apache['category'] = "web"
apache['version'] = "2.2.14-4"
不过,我并不知道字典的名字是什么,它是作为一个变量传过来的,比如说 dname = 'apache'
。这个dname是从一个文本文件中解析出来的。逻辑是这样的:“分隔符后第一个单词是字典的名字;接下来的 n 行是以键值对的形式分配给这个字典;跳到下一个分隔符;重复这个过程直到结束。”
我尝试过的方法:
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只适用于函数和模块吗?)
在如何根据变量值创建字典中,我了解到 vars()
,但它似乎要求字典必须已经存在?
vars(dname)[key] = value
TypeError: vars() argument must have __dict__ attribute
这个问题的标题是我找到的最接近我想要的内容,但答案都是关于用变量作为键,而不是字典的名字:用变量的名字创建字典
1 个回答
2
从评论的讨论中可以看出,你想创建一个变量,而这个变量的名字是存储在另一个变量里的。
下面的代码展示了怎么做到这一点:
d = {}
d["name"] = "Apache Web Server"
d["category"] = "web"
d["version"] = "2.2.14-4"
locals()["apache"] = d
print apache
这段代码创建了一个局部变量,不过你也可以看看 globals()
。