我在遍历解析的json文档时如何定义一个列表并将其追加到列表中感到困惑。我无法追加到未定义的列表中。但是我不想设置为空列表,因为那样会覆盖下一次迭代中的值。这就是我所拥有的:
from collections import defaultdict
nested_dict = lambda: defaultdict(nested_dict)
hash = nested_dict()
for e in decoded_jason['volumeList']:
volumeName = e['name']
volumeType = e['volumeType']
if volumeType == 'Snapshot':
consistencyGroupId = e['consistencyGroupId']
#I am missing a step here to initialize empty list so I can append
hash['map']['consistencyGroup'][consistencyGroupId].append(volumeName)
如果我在追加之前执行此操作,则可以使用,但是随后列表将在下一次迭代中设置为空:
hash['map']['consistencyGroup'][consistencyGroupId]=[]
hash['map']['consistencyGroup'][consistencyGroupId].append(volumeName)
答案 0 :(得分:2)
使您的最后一行为:
hash['map']['consistencyGroup'].setdefault(consistencyGroupId, []).append(volumeName)
setdefault
返回该键的值(如果存在),或者如果不存在,则将其设置为提供的默认值(在这种情况下为[]
),然后将其返回。