我有一个像list = ['foo', 'bar', 'baz']
这样的列表,并在项目上运行for循环。每次我这样做,我都想创建一个以当前循环的列表元素命名的字典。例如
for element in list:
('%s' + '_' + 'dict') % element = {}
当然,这不起作用,给我错误:
SyntaxError: can't assign to operator
有什么想法吗?
答案 0 :(得分:6)
你可以用dict来做。像:
context = {} for element in list: context['%s_dict' % element] = {}
之后,您可以使用context ['foo_dict']来访问您创建的词典。
答案 1 :(得分:6)
虽然可以使用eval
或在globals()
词典中创建新条目,但这几乎肯定是个坏主意。而是将您的字典名称明确地用作另一个字典中的键:
names = ['foo', 'bar', 'baz']
d = {}
for name in names:
d[name] = {}
你也可以使用dict理解(或dict
构造函数中的生成器表达式,如果你在Python的早期版本中不允许dict理解):
d = {name: {} for name in names}
# d = dict((name, {}) for name in names) # generator expression version for pre-2.7