1
更新JSON字典奇怪的輸出中我有這樣一個JSON字典:關於Python
nxt = {"name": names[a], "profile_id": indata["profile_id"], "firstname": firstnames[a], "middlename": middlenames[a], "lastname": lastnames[a],
"e_mail": e_mails[a], "phone_number": phone_numbers[a], "location": locations[a], "sex": genders[a],
"user_id": indata["user_id"], "updated_by": indata["username"]}
我要更新詞典:
cpnxt = nxt
del cpnxt['profile_id'], cpnxt['user_id'], cpnxt['updated_by']
nxt.update({"jsondata": cpnxt})
data.append(nxt)
我希望得到這樣的輸出:
nxt = {'e_mail': '', 'firstname': 'John', 'jsondata': "{'phone_number': '', 'firstname': 'John', 'middl...ame': 'John Smith', 'e_mail': '', 'location': ''}", 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}
但是我得到這樣一個輸出:
nxt = {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {...}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}
這真的很煩人。我不知道我犯了什麼錯誤。
我該如何解決這個煩人的問題?
我沒有讀你的整個代碼,但只是你知道,'cpnxt = nxt'不會創建'nxt'的深層副本。你對'cpnxt'所做的任何修改都會發生在'nxt'上。如果您想製作不是參考副本的字典副本,請使用'dict.copy'方法或'deepcopy'模塊。 – Kevin