[英]Trying to delete a key/value pair from JSON within a list
def loop_through_list_keys_and_update_or_delete(body_dict, list_key, key_to_manipulate, update_or_delete):
request_body = body_dict
try:
for keys in request_body[list_key]:
for key, value in keys.items():
if key == key_to_manipulate:
if update_or_delete == 'delete':
del request_body[key]
大家好, Python 相對較新。所以請保持溫和,非常感謝您的幫助。 附圖中是我的運行時值。 基本上我想做的是刪除一個特定的(但會改變的)鍵/值對。 request_body 是我讀入的 json。
我在列表“fxTransactions”上循環,它獲得的唯一鍵是 financialTransaction 和 transactionRefId。 在這種情況下,我需要訪問 financialTransaction 中的 request_body[fxTransactions][0][financialTransaction][rule] 字段並刪除它及其值。 但是我不能將它作為變量發送到 delete,因為你不能將列表名稱與變量中的鍵組合起來。 我似乎無法弄清楚如何進入該字段並將其刪除。 請注意,要刪除的字段/值對是動態的,因此我並不總是知道要刪除哪一個(可能是債務人、債權人等)。 如果可能的話,我還想將此代碼用於其他列表,因此盡量不要硬編碼。 但如果沒有其他辦法,我可以。
先感謝您!
這是可以完成我想做的事情的代碼,但我正在嘗試想出一種方法來使其更清潔和可重用:
index_key_int = int(index_key)
split_key = key.split(".")
keys_numb = len(split_key)
if keys_numb == 5:
del request_body[list_key][index_key_int][split_key[0]][split_key[1]][split_key[2]][split_key[3]][
split_key[4]]
if keys_numb == 4:
del request_body[list_key][index_key_int][split_key[0]][split_key[1]][split_key[2]][split_key[3]]
if keys_numb == 3:
del request_body[list_key][index_key_int][split_key[0]][split_key[1]][split_key[2]]
elif keys_numb == 2:
del request_body[list_key][index_key_int][split_key[0]][split_key[1]]
elif keys_numb == 1:
del request_body[list_key][index_key_int][split_key[0]]
您可以使用循環而不是對所有嵌套索引進行硬編碼。
obj = request_body[list_key][index_key_int]
for key in split_key[:-1]:
obj = obj[key]
del obj[split_key[-1]]
for
循環深入到嵌套字典中。 然后它刪除具有最終鍵的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.