如果For循环的结果是等效的Python

时间:2014-07-24 16:33:39

标签: python json amazon-web-services equivalent

我有一个for循环,它正在拉动AWS快照,然后将快照放入dict

for snapshot in current_snapshots: dict1 = {snapshotYear:{snapshotMonth:{snapshotDay:[[snapshot]]}}} print dict1

这正确打印出来

{"2014": {"7": {"22": [["Snapshot:snap-XXXXXXXX"]]}}} {"2014": {"7": {"22": [["Snapshot:snap-YYYYYYYY"]]}}}

我希望能够说如果snapshotDay相同,则应该打印出来

{"2014": {"7": {"22": [["Snapshot:snap-XXXXXXXX"], ["Snapshot:snap-YYYYYYYY"]]}}},如果它是相同的snapshotMonth

打印

{"2014": {"7": {"22": [["Snapshot:snap-XXXXXXXX"]}, {"15": [["Snapshot:snap-YYYYYY"]]}}}

这需要设置for循环等效的结果。我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

from collections import defaultdict
defaultdict_dict=lambda :defaultdict(defaultdict_dict)
data = defaultdict(defaultdict_dict)

for snapshot in current_snapshots:
   try:
      data[snapshotYear][snapshotMonth][snapshotDay].append(snapshot)
   except AttributeError:
      data[snapshotYear][snapshotMonth][snapshotDay] = [snapshot]

print json.dumps(data)

可能就是我如何处理它......