簡體   English   中英

嘗試從列表中的 JSON 中刪除鍵/值對

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM