我正在尝试在Python 2.7中的for循环中创建许多字典。我有一个如下列表:
sections = ['main', 'errdict', 'excdict']
我想访问这些变量,并使用变量名创建新的词典。我只能访问列表部分并在列表中存储空字典,但不能存储在相应的变量中。
for i in enumerate(sections):
sections[i] = dict()
这个问题的关键是。我将从.ini文件中获取列表部分,该变量将有所不同。我可以创建一个字典数组,但这对于进一步的功能要求不起作用。因此,我怀疑。
答案 0 :(得分:2)
清除词典
如果列表中的变量已经是字典,请使用:
for var in sections:
var.clear()
请注意,此处var = {}
不起作用,请参阅Difference between dict.clear() and assigning {} in Python。
创建新词典
只要您只有一小部分,最好的方法可能是最简单的方法:
main = {} #same meaning as main = dict() but slightly faster
errdict = {}
excdict = {}
sections = [main,errdict,excdict]
在将变量放入列表之前,需要首先声明变量。
对于更多的词汇,我在评论中支持@ dslack的回答(全部归功于他):
sections = [dict() for _ in range(numberOfDictsYouWant)]
如果您希望能够按名称访问词典,最简单的方法是制作字典词典:
sectionsdict = {}
for var in sections:
sectionsdict[var] = {}
感兴趣
答案 1 :(得分:2)
Robin Spiess精美地回答了你的问题。
我只想添加单行方式:
section_dict = {sec : {} for sec in sections}
为了维护插入顺序,您需要OrderedDict
:
from collections import OrderedDict
section_dict = OrderedDict((sec, {}) for sec in sections)