在Python中,如何循环使用包含多个子键的JSON文件?

2024-05-29 05:45:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个json文件:-

{
    "group": "avengers",
    "members": [
      {
        "name": "Dr.Strange",
        "id": 456409,
        "type": "magic",
        "relatives": ["wang", "the ancient one"]
      },
      {
        "name": "Iron man",
        "id": 381001,
        "type": "technology",
        "relatives": ["pepper pots", "james rhodes"]
      }
    ]
}

我希望输出为:-

复仇者集团成员:

^{tb1}$

我想把所有的relatives分开。我知道如何获取nameidtypes,因为它们只有1个值

我的代码:-

import json

f = open('1.json', 'r')
content = json.load(f)

for i in content['members']:
  print(i['name'], end=' ')
  print(i['id'], end=' ')
  print(i['relatives'])
  print()

我的代码输出:-

Dr.Strange 456409 ['wang', 'the ancient one'] 

Iron man 381001 ['pepper pots', 'james rhodes']

但我不想让单独的亲戚出现在名单上。因此,对于每个亲戚,请重新键入我在上表中列出的名称

我知道我可以使用i['relatives'][0],但是如果我不知道亲戚的数量呢?也许for loop能帮上忙

谢谢大家!


Tags: thenameidjsontypeoneprintmembers
3条回答

您可以随时检查列表的长度,并在该长度上进行循环迭代

for j in range(0,len(i)):
    i['relatives'][j]

我想这可能会有帮助

例如,您可以这样做:

import json

f = open('1.json', 'r')
content = json.load(f)

for superhero in content .get('members'):

    if type(superhero.get('relatives')) == list:
        values = ' ,'.join([value for value in superhero.get('relatives')])
            
    print(superhero.get('id'), superhero.get('name'), 'Relatives: ', values)

是的,for循环可以工作。尝试:

for mem in content['members']:
    for rel in mem['relatives']: # i.e., for each member, loop over relatives
        print(f"{mem['name']:10} {mem['id']:6} {mem['type']:10} {rel:20}")

输出:

Dr.Strange 456409 magic      wang
Dr.Strange 456409 magic      the ancient one
Iron man   381001 technology pepper pots
Iron man   381001 technology james rhodes

相关问题 更多 >

    热门问题