python - 仅使用一个 for 循环或嵌套 for 循环打印嵌套字典
问题描述
我有一本 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
更新:我喜欢让它动态化,所以将来如果我添加更多列表,它也会解析它。
解决方案
您可以使用 :
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'])