[英]how to format list of dictionaries to nested dictionary in python
我正在獲取大量數據作為字典列表。 但是,我想重新格式化為嵌套字典。 我不確定嵌套字典是如何工作的。 我想添加我嘗試過的代碼,但似乎在發布時出錯。 無法添加更多代碼。 我會在評論區補充。 我的字典列表在此。
source = [
{
"account_id": "111111111111",
"instance_id": "i-xxxxxxxxxxx",
"instance_profile_arn": "arn:aws:iam::111111111111:instance-profile/x",
"region_name": "eu-central-1"
},
{
"account_id": "111111111111",
"instance_id": "i-aaaaaaaaaaa",
"instance_profile_arn": "arn:aws:iam::111111111111:instance-profile/aa",
"region_name": "us-east-1"
},
{
"account_id": "22222222222",
"instance_id": "i-bbbbbbbbb",
"instance_profile_arn": "arn:aws:iam::22222222222:instance-profile/sadf",
"region_name": "eu-central-1"
},
{
"account_id": "22222222222",
"instance_id": "i-ccccccccccc",
"instance_profile_arn": "arn:aws:iam::22222222222:instance-profile/sds",
"region_name": "us-east-1"
},
{
"account_id": "33333333333",
"instance_id": "i-eeeeeeeee",
"instance_profile_arn": "arn:aws:iam::33333333333:instance-profile/dsf",
"region_name": "eu-west-1"
}
我想這樣格式化。
{
"111111111111": {
"eu-central-1": {
"i-xxxxxxxxxxx": "arn:aws:iam::111111111111:instance-profile/x"
},
"us-east-1": {
"i-aaaaaaaaaaa": "arn:aws:iam::111111111111:instance-profile/aa"
}
},
"22222222222": {
"eu-central-1": {
"i-bbbbbbbbb": "arn:aws:iam::22222222222:instance-profile/sds"
},
"us-east-1": {
"i-ccccccccccc": "arn:aws:iam::22222222222:instance-profile/sds"
}
},
"33333333333": {
"eu-west-1": {
"i-eeeeeeeee": "arn:aws:iam::33333333333:instance-profile/dsf"
}
}
}
我試過的代碼。
for each in source:
list_dict.append({
each['account_id']: {
each['region_name']: {
each['instance_id']: each['instance_profile_arn']
}
}
})
print(list_dict)
我想將輸出寫入 csv 文件。 我將不勝感激任何幫助。
試試這個,使用setdefault
初始化丟失的鍵並隨時更新值。
source = { .. } # source dict
result = {}
for v in source:
(result.setdefault(v['account_id'], {})
.setdefault(v['region_name'], {})
.update({v['instance_id']: v['instance_profile_arn']}))
print(result)
{'111111111111': {'eu-central-1': {'i-xxxxxxxxxxx': 'arn:aws:iam::111111111111:instance-profile/x'},
'us-east-1': {'i-aaaaaaaaaaa': 'arn:aws:iam::111111111111:instance-profile/aa'}},
'22222222222': {'eu-central-1': {'i-bbbbbbbbb': 'arn:aws:iam::22222222222:instance-profile/sadf'},
'us-east-1': {'i-ccccccccccc': 'arn:aws:iam::22222222222:instance-profile/sds'}},
'33333333333': {'eu-west-1': {'i-eeeeeeeee': 'arn:aws:iam::33333333333:instance-profile/dsf'}}}
你可以這樣做:
result = dict();
for item in source:
account: = item['account_id']
region = item['region_name']
if account not in result:
result[account] = dict()
if region not in result[account]:
result[account][region] = dict()
instance = item['instance_id']
instance_profile = item['instance_profile_arn']
result[account][region][instance] = instance_profile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.