Python 试图从列表中的JSON中删除键/值对
大家好!对Python来说比较陌生,所以请温柔一点,我非常感谢你的帮助!附件中的图片是我的运行时值。基本上,我要做的是删除一个特定的(但会改变的)键/值对。请求体是我读过的json 我在“fxTransactions”列表上循环,它得到的唯一关键是financialTransaction和transactionRefId。在这种情况下,我需要进入financialTransaction中的请求主体[fxTransactions][0][financialTransaction][rule]字段,并删除它及其值。但我不能将其作为变量发送到delete,因为不能将列表名与变量中的键组合在一起。我似乎不知道如何访问此字段并删除它。请注意,要删除的字段/值对是动态的,因此我并不总是知道要删除哪个字段/值对(可能是债务人、债权人等)。如果可能的话,我还想将此代码用于其他列表,所以尽量不要硬编码。但如果没有别的办法,我可以 提前谢谢你 下面是一些代码,这些代码可以完成我想做的事情,但我正试图找到一种方法来让它更干净、更可重用:Python 试图从列表中的JSON中删除键/值对,python,json,list,dictionary,Python,Json,List,Dictionary,大家好!对Python来说比较陌生,所以请温柔一点,我非常感谢你的帮助!附件中的图片是我的运行时值。基本上,我要做的是删除一个特定的(但会改变的)键/值对。请求体是我读过的json 我在“fxTransactions”列表上循环,它得到的唯一关键是financialTransaction和transactionRefId。在这种情况下,我需要进入financialTransaction中的请求主体[fxTransactions][0][financialTransaction][rule]字段,
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]]