Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 试图从列表中的JSON中删除键/值对_Python_Json_List_Dictionary - Fatal编程技术网

Python 试图从列表中的JSON中删除键/值对

Python 试图从列表中的JSON中删除键/值对,python,json,list,dictionary,Python,Json,List,Dictionary,大家好!对Python来说比较陌生,所以请温柔一点,我非常感谢你的帮助!附件中的图片是我的运行时值。基本上,我要做的是删除一个特定的(但会改变的)键/值对。请求体是我读过的json 我在“fxTransactions”列表上循环,它得到的唯一关键是financialTransaction和transactionRefId。在这种情况下,我需要进入financialTransaction中的请求主体[fxTransactions][0][financialTransaction][rule]字段,

大家好!对Python来说比较陌生,所以请温柔一点,我非常感谢你的帮助!附件中的图片是我的运行时值。基本上,我要做的是删除一个特定的(但会改变的)键/值对。请求体是我读过的json

我在“fxTransactions”列表上循环,它得到的唯一关键是financialTransaction和transactionRefId。在这种情况下,我需要进入financialTransaction中的请求主体[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
循环深入嵌套字典。然后用最后一个键删除元素。

请将代码作为文本而不是图像发布。请阅读
key
keys
字典的键,但您正在从
request\u body
中删除它。为什么需要循环?你可以使用
if key-to-operation-in-keys:
我已经发布了代码,以及以不同/不干净的方式执行我尝试的操作的代码,以及更多细节。非常感谢!这是伟大的删除!要设置值,我可以只执行obj[split_key[-1]]=value吗?当然可以。事实上,我从中导出代码的问题就是为了这样做。太棒了!这两个部分都起了作用,我从中学到了很多。我真的很感激!
obj = request_body[list_key][index_key_int]
for key in split_key[:-1]:
    obj = obj[key]
del obj[split_key[-1]]