Python將巢狀字典轉換為扁平字典?
隨著世界擁抱更多非結構化資料,我們遇到了許多格式的資料,其中資料結構可以像巢狀 JSON 那樣深度巢狀。Python 能夠透過連線內部鍵和外部鍵來扁平化資料,從而處理巢狀資料結構。在本文中,我們將獲取一個巢狀字典並將其扁平化。
使用遞迴方法
在此方法中,我們設計一個函式以遞迴方式處理字典中的每個專案。我們傳遞字典,為輸出字典、鍵和分隔符設計一個佔位符作為引數。我們使用 isinstance 來檢查下一個專案本身是否是字典,然後如果它也是一個字典,則透過遞迴呼叫傳遞給它。
示例
dictA = {
"id": "0001",
"name": "hotdog",
"image":
{
"url": "images/0001.jpg",
"thumbnail":
{
"url": "images/thumbnails/0001.jpg",
"height,width": "2x4"
}
}
}
def dict_flatten(in_dict, dict_out=None, parent_key=None, separator="_"):
if dict_out is None:
dict_out = {}
for k, v in in_dict.items():
k = f"{parent_key}{separator}{k}" if parent_key else k
if isinstance(v, dict):
dict_flatten(in_dict=v, dict_out=dict_out, parent_key=k)
continue
dict_out[k] = v
return dict_out
final_dict = dict_flatten(dictA)
print(final_dict)輸出
執行以上的程式碼,給我們以下結果 −
{
'id': '0001',
'name': 'hotdog',
'image_url': 'images/0001.jpg',
'image_thumbnail_url': 'images/thumbnails/0001.jpg',
'image_thumbnail_height,width': '2x4'
}使用 cberrypicker
這是一個模組,可以透過將字典作為輸入直接使用。預設分隔符是 -。
示例
from cherrypicker import CherryPicker
dictA = {
"id": "0001",
"name": "hotdog",
"image":
{
"url": "images/0001.jpg",
"thumbnail":
{
"url": "images/thumbnails/0001.jpg",
"height,width": "2x4"
}
}
}
picker = CherryPicker(dictA)
print(picker.flatten().get())輸出
執行以上的程式碼,給我們以下結果 −
{
'id': '0001',
'name': 'hotdog',
'image_url': 'images/0001.jpg',
'image_thumbnail_url': 'images/thumbnails/0001.jpg',
'image_thumbnail_height,
width': '2x4'
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP