根据变量值命名字典

1 投票
1 回答
15550 浏览
提问于 2025-05-01 02:55

我该如何用一个变量的值给字典命名呢?

我想做的事情是这样的:

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()

撰写回答