用列表构建嵌套字典

时间:2019-03-21 18:12:42

标签: python

我在遍历解析的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)

1 个答案:

答案 0 :(得分:2)

使您的最后一行为:

hash['map']['consistencyGroup'].setdefault(consistencyGroupId, []).append(volumeName)

setdefault返回该键的值(如果存在),或者如果不存在,则将其设置为提供的默认值(在这种情况下为[]),然后将其返回。