[英]Convert excel to nested dictionary
我嘗試將 excel 文件轉換為 python 字典。 excel 如下所示
我想要的字典如下
[
{
"ipam.prefixes": [
{
"10.0.1.0/28": {
"prefix": "10.0.1.0/28",
"status": "container",
"vlan": {"vid": 200}
}
}
]
]
如果 excel 數據是平坦的,比如“前綴”和“狀態”,我可以轉換它們,但是如果有額外的數據,我不知道如何制作它。 excel 中的大多數數據是基本的鍵/值對,但一些隨機項將是 key:{key1:value} 或 key:{key1:value1, key2:value2},我嘗試找到一種通用的方法來轉換它們到正確的字典,不管用戶輸入什么。 如果 python 代碼易於操作數據,則可以更改 excel 的格式。
你可能會嘗試這樣的事情:
import pprint
import pandas as pd
dfs = pd.read_excel('test.xlsx', sheet_name=None)
res = {}
for sheet_name, df in dfs.items():
df_dict = df.to_dict() # TODO : check if there is at least 4 rows, otherwise it will crash
subname = df_dict['prefix'][0]
res[sheet_name] = [
{subname:{
key: df_dict[key][0] if pd.isna(df_dict[key][1])
else {df_dict[key][0]: df_dict[key][1]} if pd.isna(df_dict[key][3])
else {df_dict[key][0]: df_dict[key][1], df_dict[key][2]: df_dict[key][3]}
for key in df_dict.keys()
}}
]
pprint.pprint(res)
這遠非完美,並且有很多警告(例如,如果沒有 4 行,則必須向數據框中添加行),並且我做了一些假設(例如,您不會有超過兩個級別的鍵:值對,或者您將始終擁有一個'prefix'
鍵)。
那仍然應該是一個好的開始。
請注意,您問題中的 output 缺少括號,因此此代碼 output 可能與您要求的代碼略有不同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.