在列表项后命名词典

时间:2013-07-31 03:51:23

标签: python

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

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

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

SyntaxError: can't assign to operator

有什么想法吗?

2 个答案:

答案 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