首页 > 解决方案 > 如何将新列表附加到 JSON 文件中的现有字典

问题描述

我是 Python 的新手,我正在尝试列出一个包含学生的教室列表。但我正在尝试使用变量将它附加到 JSON 文件中的字典中。我当前的 JSON 文件如下所示:

[{"History": ["sally", "billy", "tommy"]}]

但我想添加一个新列表,使其看起来像这样:

[{"Hisotry": ["sally", "billy", "tommy"], "Calculus": ["billy", "sammy"]}]

我有这段代码,我可以让变量classRoom成为班级并studentName成为学生。我尝试通过更改 dict 的数据类型将新列表附加到整个文件,但我不断收到错误消息,提示“关键字不能是表达式”。当我尝试运行它时。

with open('students.json') as p:
      data = json.load(p)
if type (data) is dict:
      data = [data]
#classRoom = [studentName]
data.append([str(classRoom)] = [str(studentName)])
with open ('students.json', 'w') as outfile:
          json.dump(data,outfile)
 print "Success added new student to classroom"

我还尝试在将其添加到字典之前创建一个列表,执行 classRoom = [studentName]然后附加它,data.append(classRoom)但只有列表被附加,而不是 classRoom 名称。所以 JSON 文件最终看起来像这样。

[{"History": ["sally", "billy", "tommy"], ["sally"]}]

我正在尝试在文件中同时包含教室名称和学生,但我不确定尝试将新列表添加到文件中我做错了什么。关于我如何做到这一点或我缺少什么的任何帮助?

标签: pythonjsonlistdictionary

解决方案


data.append([str(classRoom)] = [str(studentName)])

这是错误的,您不能分配给函数调用。我也不确定所有转换为str.

只需在列表中的第一个字典中分配一个新键(假设classRoom是字符串"Calculus"并且studentName是列表["billy", "sammy"]):

data[0][classRoom] = studentName

推荐阅读