在Python中创建许多空字典

时间:2015-12-22 09:31:37

标签: python for-loop dictionary

我正在尝试在Python 2.7中的for循环中创建许多字典。我有一个如下列表:

sections = ['main', 'errdict', 'excdict']

我想访问这些变量,并使用变量名创建新的词典。我只能访问列表部分并在列表中存储空字典,但不能存储在相应的变量中。

for i in enumerate(sections):
    sections[i] = dict()

这个问题的关键是。我将从.ini文件中获取列表部分,该变量将有所不同。我可以创建一个字典数组,但这对于进一步的功能要求不起作用。因此,我怀疑。

2 个答案:

答案 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] = {}

您可能也对Using a string variable as a variable name

感兴趣

答案 1 :(得分:2)

Robin Spiess精美地回答了你的问题。

我只想添加单行方式:

section_dict = {sec : {} for sec in sections}

为了维护插入顺序,您需要OrderedDict

from collections import OrderedDict
section_dict = OrderedDict((sec, {}) for sec in sections)