4

我有一个类似的列表,list = ['foo', 'bar', 'baz']并且正在对这些项目运行一个 for 循环。每次我这样做时,我都想创建一个以当前循环的列表元素命名的字典。例如

for element in list:
    ('%s' + '_' + 'dict') % element = {}

当然,这不起作用,给了我错误:

SyntaxError: can't assign to operator

有任何想法吗?

4

2 回答 2

6

你可以用字典来做。像:

上下文 = {}
对于列表中的元素:
    上下文['%s_dict' % 元素] = {}

之后,您可以使用 context['foo_dict'] 访问您创建的字典。

于 2013-07-31T03:56:51.427 回答
6

虽然可以eval在字典中使用或创建新条目globals(),但这几乎肯定是个坏主意。相反,将您的字典名称明确用作另一个字典的键:

names = ['foo', 'bar', 'baz']

d = {}
for name in names:
    d[name] = {}

您还可以使用字典推导(或dict构造函数中的生成器表达式,如果您使用的是不允许字典推导的早期版本的 Python):

d = {name: {} for name in names}
# d = dict((name, {}) for name in names) # generator expression version for pre-2.7
于 2013-07-31T03:58:03.727 回答