【发布时间】:2025-12-08 11:40:01
【问题描述】:
如何根据变量值给字典命名?
我正在尝试构建的示例:
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
这个问题的标题是我发现的最接近我所追求的东西,但答案是关于使用变量作为键,而不是字典名称:Create a dictionary with name of variable
【问题讨论】:
-
给我们一些背景信息,它是从哪里“到达”的?
-
@NPE 它是从文本文件中解析出来的:“分隔符后的第一个单词是 dict_name;接下来的 n 行被拆分为 dict_name 的键:值对;跳到下一个分隔符;重复直到结束”
-
哦,所以你想创建一个具有这个名字的字典?
-
这里已经有答案了。 *.com/questions/11553721/…
-
你为什么不把字典放在另一个字典里,
'apache'是关键?
标签: python dictionary