我可以使用 configparser 制作字典字典吗?

Can I use configparser to make a dictionary of dictionaries?

目前,我正在使用configparser从一个.ini文件中制作一个Person-class对象的字典,它看起来像这样(在真正的字典中,还有更多的人):

[Pers1]
name = Alice
sex = female

[Pers2]
name = Bob
sex = male

这个解析的字典叫做people,所以people['Pers1'].namePers1"Alice"name属性。 people['Pers2'].sex"male",依此类推。

现在,假设我希望 Alice 有另一个属性,称为 tagstags 将是一个字典,其结构如下:

people['Pers1'].tags = {
'Employed':
    {COMPANY: 'Macrosoft',
     EMPLOYEE_SINCE: '1/5/2005'
     },
'LicensedPilot':
    {LICENSE_ISSUED: '6/7/2007',
     EXPIRATION_DATE: '12/11/2017'
     }
}

tags 是一个可能为空的字典,或者可能包含更多的字典(虽然只有一层嵌套,所以没有字典的字典...在 tags).

有没有办法设置 configparser 来读取 .ini 并创建这些字典?

INI 本身是一种平面格式。如果你想在其中存储嵌套数据,你将需要处理它。

例如,合格的 属性 名称:

[Pers1]
name = Alice
sex = female
tags.COMPANY = Macrosoft
tags.EMPLOYEE_SINCE = 1/5/2005

请注意,这些仍将作为 'flat' options 列表返回,例如第一个标签的键值为 "tags.COMPANY"。您需要在 . 上拆分选项名称并自行处理结果。

另一种方法是使用旨在存储嵌套数据并直接转换为列表和字典的格式,例如 YAML。