【问题标题】:Can I use configparser to make a dictionary of dictionaries?我可以使用 configparser 制作字典吗?
【发布时间】:2016-01-23 20:20:35
【问题描述】:

目前,我正在使用 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 并创建这些字典?

【问题讨论】:

    标签: python dictionary configparser


    【解决方案1】:

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

    例如,限定属性名称:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多