【问题标题】:How to create/read nested dictionary from file?如何从文件中创建/读取嵌套字典?
【发布时间】:2020-02-29 06:18:45
【问题描述】:

这是文本文件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,从未研究过嵌套字典。

【问题讨论】:

  • 这看起来不像我见过的任何文件格式。如果名称或描述包含=,",该怎么办?
  • 我将创建这些文本文件。而且他们不会有任何特殊字符@AlexHall
  • 那就不要这样创建那些文本文件。使用标准格式,例如 JSON(然后您可以直接存储嵌套字典)或 CSV。
  • 是的,这会更容易。谢谢

标签: python python-3.x dictionary for-loop logic


【解决方案1】:

我假设:

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

当然,正如@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"'}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2017-07-25
    相关资源
    最近更新 更多