繁体   English   中英

如何在字典中添加键值对以在python中以JSON格式转储数据?

[英]How to add a key-value pair in dictionary for dumping data in JSON format in python?

我想将一个键值对添加到具有一些键值对的现有数组中,然后以JSON格式转储此信息。

我尝试了以下代码:

import json

student_data = [{'stu_name':'name','id no':7}]

if result is 1:    
    student_data['result'] = 'pass'
else:
    student_data['result'] = 'fail'

if school is 1:
   student_data['school'] = 'secondary school'
else:
   student_data['school'] = 'primary school'

with open(file.json, "w") as f:
    json.dump(student_data, f)

但是这段代码给我在"student_data['result'] = 'pass'行中的错误

我尝试从student_data = [{'stu_name':'name','id no':7}]删除[] student_data = [{'stu_name':'name','id no':7}]

但随后只有键被打印在文件中而没有值。

我该如何纠正?

您有一个带有字典的列表。 使用索引:

student_data[0]['result'] = 'pass'

稍后在写时添加列表:

student_data = {'stu_name':'name','id no':7}

# ...

with open(file.json, "w") as f:
    json.dump([student_data], f)

注意:当您应该测试相等性时,请勿对整数使用身份测试。 仅仅因为CPython 恰好会生成小整数,所以使用is 1不是一个好主意。 使用== 1代替:

student_data = {'stu_name':'name','id no':7}

student_data['result'] = 'pass' if result == 1 else 'fail'
student_data['school'] = 'secondary school' if school == 1 else 'primary school'

with open(file.json, "w") as f:
    json.dump([student_data], f)

在上面的示例中,我使用条件表达式来设置resultschool密钥; 您也可以直接在字典文字中使用它们:

student_data = [{'stu_name': 'name', 'id no':7,
                 'result': 'pass' if result == 1 else 'fail',
                 'school': 'secondary school' if school == 1 else 'primary school',
                }]

with open(file.json, "w") as f:
    json.dump(student_data, f)

如果要将student_data更改为字典,则可以尝试使用类似方法来更新字典。 您将从student_data中删除[],因此它将变为dict对象。

>>> student_data = {'stu_name':'name','id no':7}
>>> student_data.update({'result':'pass'})
>>> student_data
{'stu_name': 'name', 'id no': 7, 'result': 'pass'}
>>>

或者您可以分配它:

>>> student_data = {'stu_name':'name','id no':7}
>>> student_data['result'] = 'pass'
>>> student_data
{'stu_name': 'name', 'id no': 7, 'result': 'pass'}
>>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM