我如何用JSON中先前值的最后一个数字继续新值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何用JSON中先前值的最后一个数字继续新值?相关的知识,希望对你有一定的参考价值。
这是我的代码:
with open('res.json', 'r') as file1:
json_data = json.load(file1)
for g in json_data['groups']:
try:
for i, group in enumerate(g['resources']):
group['slot'] = i
except:
continue
with open("RES_Edited.JSON", 'w') as json_edited:
json.dump(json_data, json_edited, indent = 1)
它使每个插槽都像插槽:1,插槽:2,插槽:3,那太好了。但是在g ['resources']的下一个子级中,它又像插槽:1,插槽:2,插槽3一样开始。我希望它从上一个子级的最后一个数字继续。如:广告位:4,广告位:5 ...
谢谢!
答案
为什么不在整个代码中使用一个变量,而不是像下面这样的for循环:
with open('res.json', 'r') as file1:
json_data = json.load(file1)
i = 1
for g in json_data['groups']:
try:
for group in g['resources']:
group['slot'] = i
i += 1
except:
continue
with open("RES_Edited.JSON", 'w') as json_edited:
json.dump(json_data, json_edited, indent = 1)
另一答案
对当前代码的最小更改。只需在循环范围之外添加一个变量,然后使用range
而不是enumerate
。
current_child = 0
with open('res.json', 'r') as file1:
json_data = json.load(file1)
for g in json_data['groups']:
try:
for i, group in zip(range(current_child, current_child+len(g['resources'])),g['resources']):
group['slot'] = i
except:
continue
with open("RES_Edited.JSON", 'w') as json_edited:
json.dump(json_data, json_edited, indent = 1)
以上是关于我如何用JSON中先前值的最后一个数字继续新值?的主要内容,如果未能解决你的问题,请参考以下文章
Grails:request.JSON 是从哪里来的,我如何用 jQuery 的 .ajax() 或 .post() 把东西放在那里?