我有一个类似的列表,list = ['foo', 'bar', 'baz']
并且正在对这些项目运行一个 for 循环。每次我这样做时,我都想创建一个以当前循环的列表元素命名的字典。例如
for element in list:
('%s' + '_' + 'dict') % element = {}
当然,这不起作用,给了我错误:
SyntaxError: can't assign to operator
有任何想法吗?
我有一个类似的列表,list = ['foo', 'bar', 'baz']
并且正在对这些项目运行一个 for 循环。每次我这样做时,我都想创建一个以当前循环的列表元素命名的字典。例如
for element in list:
('%s' + '_' + 'dict') % element = {}
当然,这不起作用,给了我错误:
SyntaxError: can't assign to operator
有任何想法吗?
你可以用字典来做。像:
上下文 = {} 对于列表中的元素: 上下文['%s_dict' % 元素] = {}
之后,您可以使用 context['foo_dict'] 访问您创建的字典。
虽然可以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