[英]How to convert a nested dict to dict-of-lists?
我有一個包含多個嵌套字典的輸入文件,如下所示:
input= {"md5": "36a4d23084085455409e4fc2c8655e47",
"sha1": "13f24657a8823b5e076b841ab5dfa1db5aa3825d",
"sha256": "fffaeb0de998f17d1e58bd1329241dc4181f6c8e367c6dae7d289dd52294538d",
"av_labels": {"Avast": {"result": None},
"Avira": {"result": None},
.................
"Eset": {"result": "Trojan/Win32.Tepfer"}
}
}
我必須將其轉換為類似下面的內容才能在另一個程序中工作。
output= {"md5": "36a4d23084085455409e4fc2c8655e47",
"sha1": "13f24657a8823b5e076b841ab5dfa1db5aa3825d",
"sha256": "fffaeb0de998f17d1e58bd1329241dc4181f6c8e367c6dae7d289dd52294538d",
"av_labels": [ ["Avast", None],
["Avira", None],
............
["Eset", "Trojan/Win32.Tepfer"]
]
}
我認為實際上應該將"av_labels"
鍵的值從 dict-of_dict 轉換為 list-of-lists 並刪除"result"
鍵。
我看到了一些將 dict 轉換為 list 的技術,但我沒有得到預期的結果。 我使用 python 3。
您可以通過使用列表理解重新分配“av_labels”鍵來做到這一點。 我已將您的變量名稱更改a
,因為輸入是 python 的內置function。
a['av_labels'] = [[k, v['result']] for k, v in a['av_labels'].items()]
{'av_labels': [['Avast', None],
['Avira', None],
['Eset', 'Trojan/Win32.Tepfer']],
'md5': '36a4d23084085455409e4fc2c8655e47',
'sha1': '13f24657a8823b5e076b841ab5dfa1db5aa3825d',
'sha256': 'fffaeb0de998f17d1e58bd1329241dc4181f6c8e367c6dae7d289dd52294538d'}
這就是您可以將其轉換為元組的方法。 元組基本上是一個不可變的列表。
d["av_labels"] = list(zip(d["av_labels"].keys(),map(lambda x: list(x.values())[0],d["av_labels"].values())))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.