【问题标题】:Add a dictionary created with inputs in a JSON list在 JSON 列表中添加使用输入创建的字典
【发布时间】:2021-05-08 16:57:46
【问题描述】:

我把这段代码删减了,完整的有更多关于玩家的数据,这段代码的目的是添加一个玩家来输入程序请求的数据并将相同的数据记录在 JSON 文件中。

import json

class Player:
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
        

class FootballPlayer(Player):
    def __init__(self, first_name, last_name, goals):
        super().__init__(first_name=first_name, last_name=last_name)
        self.goals = goals

print("Enter some football player's data!")

f_name = input("Enter player's first name: ")
l_name = input("Enter player's last name: ")
goals = input("Enter the number of player's goals: ")

new_player = FootballPlayer(first_name=f_name, last_name=l_name, goals=int(goals))

with open("football_players.json", "r") as player_list:
    football_players =json.loads(player_list.read())
    print(str(football_players))

with open("football_players.json", "a" ) as player_list:
    player_list.write(json.dump(new_player.__dict__, player_list))

问题是当我添加新播放器时,字典超出了 JSON 文件中创建的列表。

像这样:

[

{
"first_name": "Luis",
"last_name": "Figo",
"goals": 398}

]

{"first_name": "Daniel", "last_name": "Mord", "goals": 33}

【问题讨论】:

    标签: python json list dictionary add


    【解决方案1】:

    完全正确:您将新的 JSON 记录附加到现有文件中。您确实没有将它添加到列表中。

    文件对 JSON 结构或 Python 数据类型一无所知。如果您想将播放器添加到 JSON 列表的文本版本,那么您必须读取列表,将播放器附加到列表中,然后将整个列表写回文件。

    或者,您可以seek 到文件末尾,备份一行,然后 (a) 将所有玩家写入文件——这会覆盖右括号,以及 (b) 写入新的关闭括号。

    除非你有一个巨大的文件和明显的时间限制,我建议你阅读带有json 包的文件,将你的播放器添加到 Python 列表中,然后将整个列表写回文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多