仅使用一个 for 循环或嵌套 for 循环打印嵌套字典

时间:2021-07-29 12:16:33

标签: python json

我有一个 python 字典,我能够使用 for 循环生成所需的输出,但是我使用多个 for 循环而不是 2 个不同的 for 循环我喜欢只使用一个 for 循环或嵌套的 for 循环。这是我的代码:-

nested_dictionary = {
    "id": "1",
    "name": "IT DEPART",
    "team": [

          {
        "id": "1",
        "name": "web",
        "package": [
          {
            "package_name": "packageUIEUIREIRJ",
            "package_url": "Package_url packageUIEUIREIRJ"
          },
          {
            "package_name": "packageZZZZZ",
            "package_url": "Package_url packageZZZZZ"
          },
          {
            "package_name": "packageSADJKSA",
            "package_url": "Package_url packageSADJKSA"
          },
          {
            "package_name": "packageBDF",
            "package_url": "Package_url packageSADJKSA"
          },
          {
            "package_name": "packageXYZ",
            "package_url": "Package_url packageXYZ"
          }
        ]
      },
        {
            "id": "2",
            "name": "Mobile",
            "package": [
                {
                    "package_name": "packageUIEUIREIRJ",
                    "package_url": "Mobile packageUIEUIREIRJ"
                },
                {
                    "package_name": "packageZZZZZ",
                    "package_url": "Mobile packageZZZZZ"
                },
                {
                    "package_name": "packageSADJKSA",
                    "package_url": "Mobile packageSADJKSA"
                },
                {
                    "package_name": "packageBDF",
                    "package_url": "Mobile packageSADJKSA"
                },
                {
                    "package_name": "packageXYZ",
                    "package_url": "Mobile packageXYZ"
                }
            ]
        }

    ]
  }
for p in nested_dictionary['team'][0]['package']:


 name = p['package_name']
 print(name + ' : ' + p['package_url'])

for i in nested_dictionary['team'][1]['package']:
    name_mobile = i['package_name']


    print(name_mobile + ' : ' + p['package_url'])

这是我目前能够使用多个“for”循环生成的输出,但我喜欢只使用一个或嵌套的“for”循环来生成相同的输出。

packageUIEUIREIRJ : Package_url packageUIEUIREIRJ
packageZZZZZ : Package_url packageZZZZZ
packageSADJKSA : Package_url packageSADJKSA
packageBDF : Package_url packageSADJKSA
packageXYZ : Package_url packageXYZ
packageUIEUIREIRJ : Package_url packageXYZ
packageZZZZZ : Package_url packageXYZ
packageSADJKSA : Package_url packageXYZ
packageBDF : Package_url packageXYZ
packageXYZ : Package_url packageXYZ

更新:我喜欢让它动态化,所以将来如果我添加更多列表,它也会解析它。

1 个答案:

答案 0 :(得分:0)

你可以使用:

for p in nested_dictionary['team'][0]['package'] + nested_dictionary['team'][1]['package']:
    print(p['package_name'] + ' : ' + p['package_url'])

如果团队可以包含可变数量的项目:

您可以使用列表理解:

for p in [item for x in nested_dictionary['team'] for item in x['package']]:
    print(p['package_name'] + ' : ' + p['package_url'])

你也可以使用 sum :

for p in sum([x['package'] for x in nested_dictionary['team']], []):
    print(p['package_name'] + ' : ' + p['package_url'])

或者你可以做两个嵌套的 for 循环:

for x in nested_dictionary['team']:
    for p in x['package']:
        print(p['package_name'] + ' : ' + p['package_url'])