[英]How can I convert a given list of lists to a tree structure in Python?
[英]Python: create tree structure from given array/list
我最終遇到了問題。
假設我有一個給定的數組,或 4 個單獨的列表(列)
P1 L1 V1 O1
P1 L1 V1 O2
P1 L1 V2 O1
P1 L1 V3 O3
P2 L1 V2 O1
P2 L2 V1 O2
P2 L3 V4 O2
我想將其轉換為 python 樹結構:
P1|
|L1|
|V1|
| |O1
| |O2
| |O3
|V2|
| |O1
|V3|
|O3
P2|
|L1|V2|O1
|L2|V1|O2
|L3|V4|O2
好的,這個給定的數組可以根據用戶輸入而改變,它總是具有這種“結構”,但它不是先驗定義的。
我的目標是定義這樣一個結構,並有可能在最低級別了解給定孩子的所有父母。
總而言之,按照@trincot 的建議,我輸入了一個輸入/輸出數據類型:
Input: 4 lists, example:
['P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P1', 'P2', 'P2', 'P2', 'P2', 'P2', 'P2', 'P2', 'P2', 'P2', 'P2']
output: One tree structure like this:
{'P1': {'L1': {'V1': {'O1': 'O1'}}, 'L2': {'V2': {'O2': 'O2'}, 'V1': {'O1': 'O1'}}}, 'P2': {'L1': {'V1': {'O1': 'O1'}}, 'L2': {'V2': {'O2': 'O2'}, 'V1': {'O1': 'O1'}}}}
在輸出中,我希望在最后一級知道元素是什么,並知道該元素的所有父元素。
當然,如果另一種數據類型更合適,我將不勝感激。
謝謝你的幫助!
我沒有看到示例輸入和示例輸出之間的聯系,因此我將猜測您想要什么。
這是一個實現:
# sample input
data = [
['P1', 'P1', 'P1', 'P1', 'P2', 'P2', 'P2'],
['L1', 'L1', 'L1', 'L1', 'L1', 'L2', 'L3'],
['V1', 'V1', 'V2', 'V3', 'V2', 'V1', 'V4'],
['O1', 'O2', 'O1', 'O3', 'O1', 'O2', 'O2']
]
forest = {}
for *path, last in zip(*data):
node = tree
for code in path:
node = node.setdefault(code, {})
node[last] = last
運行此代碼后, forest
將是以下嵌套字典:
{
"P1": {
"L1": {
"V1": {
"O1": "O1",
"O2": "O2"
},
"V2": {
"O1": "O1"
},
"V3": {
"O3": "O3"
}
}
},
"P2": {
"L1": {
"V2": {
"O1": "O1"
}
},
"L2": {
"V1": {
"O2": "O2"
}
},
"L3": {
"V4": {
"O2": "O2"
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.