簡體   English   中英

如何將嵌套的 dict 轉換為 dict-of-lists?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM