【问题标题】:Removing excess square brackets when dumping to JSON multiple times多次转储到 JSON 时删除多余的方括号
【发布时间】:2021-02-20 10:07:11
【问题描述】:

每次我将字典转储到 JSON 文件中时,都会添加一对方括号,我不知道如何避免。

我使用“尝试”写入现有 JSON 文件(出现问题的地方),并使用 JSONDecodeError 写入空 JSON 文件。 代码如下:

allgrades = []

[...]

    currentgrades = {f"name": students_name,
            "grade": students_grade,
            "date": date.strftime("%Y-%m-%d %H:%M:%S")
        }
    
    allgrades.append(currentgrades)
    # Write json file

with open("grades.json", "r") as infile:
    try:
        grades = json.load(infile)
        infile.close()
        grades.append(allgrades)
        with open("grades.json", "w") as outfile:
            json.dump(grades, outfile)
    except JSONDecodeError:
        with open("grades.json", "w") as outfile:
            json.dump(allgrades, outfile)

在使用 1 个导出的 dict 运行 py 两次后的 JSON 文件如下所示:

[{"name": "person1", "grade": "4", "date": "2021-02-20 10:42:01"}, [{"name": "person2", "grade": "4", "date": "2021-02-20 10:52:52"}]]

有没有一种方法可以让我最终得到一个只被一对方括号包围的 JSON 文件,无论我添加到 JSON 多少次? 即

[{"name": "person1", "grade": "4", "date": "2021-02-20 10:42:01"}, {"name": "person2", "grade": "4", "date": "2021-02-20 10:52:52"}]

【问题讨论】:

  • 您的意思是:'grades.extend(allgrades)'?

标签: python json python-3.x dictionary square-bracket


【解决方案1】:
grades.append(allgrades)

allgrades 是一个列表,您将其附加到 grades - 另一个列表。这将创建一个嵌套列表,这是额外的 ] 的来源。

您想要的是用新列表扩展现有列表:

grades.extend(allgrades)

这会将allgrades 中的所有条目添加到grades - 没有任何嵌套。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多