首页 > 解决方案 > 如何从文件中创建/读取嵌套字典?

问题描述

这是文本文件1的内容

name = test1,description=None,releaseDate="2020-02-27"
name = test2,description=None,releaseDate="2020-02-28"
name = test3,description=None,releaseDate="2020-02-29"

我想要这样的嵌套字典如何创建这个?

{ 'test1': {'description':'None','releaseDate':'2020-02-27'},
  'test2': {'description':'None','releaseDate':'2020-02-28'},
  'test3': {'description':'None','releaseDate':'2020-02-29'}}

在此之后,我想通过“for”循环将这些值附加到以下代码行中以获取项目列表。

示例:对于project="IJTP2"想要遍历字典中的每个名称,如下所示

project.create(name="test1", project="IJTP2", description=None, releaseDate="2020-02-27")
project.create(name="test2", project="IJTP2", description=None, releaseDate="2020-02-28")
project.create(name="test3", project="IJTP2", description=None, releaseDate="2020-02-29")

现在到下一个项目:

项目列表存储在另一个文件中,如下所示

IJTP1
IJTP2
IJTP3
IJTP4

我刚开始研究 Python,从未研究过嵌套字典。

标签: pythonpython-3.xdictionaryfor-looplogic

解决方案


我假设:

  • 每个文件行都有逗号分隔的列
  • 每列只有一个=,左边是键,右边是值
  • 只有第一列是特殊的(名称)

当然,正如@Alex Hall 提到的,我也推荐 JSON 或 CSV。
无论如何,我为您的案例编写了代码。

d = {}
with open('test-200229.txt') as f:
    for line in f:
        (_, name), *rest = (
            tuple(value.strip() for value in column.split('='))
            for column in line.split(',')
        )
        d[name] = dict(rest)

print(d)

输出:

{'test1': {'description': 'None', 'releaseDate': '"2020-02-27"'}, 'test2': {'description': 'None', 'releaseDate': '"2020-02-28"'}, 'test3': {'description': 'None', 'releaseDate': '"2020-02-29"'}}

推荐阅读