我如何用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中先前值的最后一个数字继续新值?的主要内容,如果未能解决你的问题,请参考以下文章

我如何用alamofire解析JSON

神奇的算法!看我如何用php实现计数排序

Grails:request.JSON 是从哪里来的,我如何用 jQuery 的 .ajax() 或 .post() 把东西放在那里?

我如何用数字[重复]对字符串进行排序

Mongoose 是不是提供对 pre('save') 中属性先前值的访问?

matlab 如何用插值给NAN赋值