如何将JSON字典中的值附加到新列表?

时间:2019-02-08 23:12:32

标签: python

我所有我的AWS目标组都有一个.json文件。这是使用aws elbv2 describe-target-groups创建的。我想从该文件中提取每个TargetGroupArn并将其存储到Python列表中。

使用我当前的代码,我没有输出。我可以确认字典中有数据,但是没有任何内容要添加到我要创建的列表中。

import json
from pprint import pprint

with open('target_groups.json') as f:
    data = json.load(f)

items = data['TargetGroups']
arn_list = []
for key, val in data.items():
    if key == 'TargetGroupArn':
        arn_list.append(val)

print(arn_list)

预期结果将使arn_list像这样打印出来:

[arn:aws:elb:xxxxxxx:targetgroup1, arn:aws:elb:xxxxxxx:targetgroup2, arn:aws:elb:xxxxxxx:targetgroup3]

2 个答案:

答案 0 :(得分:1)

将代码更改为此:

import json
from pprint import pprint

with open('target_groups.json') as f:
    data = json.load(f)

arn_list = []

if 'TargetGroups' in data:
    items = data['TargetGroups']

    for item in items:
        if 'TargetGroupArn' in item:
            arn_list.append(item['TargetGroupArn'])

    print(arn_list)
else:
    print('No data')

有很多方法可以使此python代码更简洁。但是,我更喜欢罗word的风格,以便于阅读。

还请注意,此代码检查密钥是否存在,以便该代码不会因缺少数据而进行堆栈转储。

答案 1 :(得分:1)

如果可以发布您要从中获取数据的文件会更好,但是这一部分:

for key, val in data.items():
if key == 'TargetGroupArn':
    arn_list.append(val)

需要更改为:

for key, val in items.items():
if key == 'TargetGroupArn':
    arn_list.append(val)

您从“数据”中获取数据并将其添加到项目中,但是您从未真正使用过它。 试一试。