簡體   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