Python - 將列表列表轉換為樹狀字典
給定一個巢狀列表,我們希望將其轉換為一個字典,其元素可以被視為樹形資料結構的一部分。在本文中,我們將看到將巢狀列表轉換為新增字典的兩種方法,其元素表示樹狀資料結構。
使用切片
我們透過切片反轉列表中的專案,然後檢查該專案是否在列表中存在。如果不存在,則忽略它,否則將其新增到樹中。
示例
def CreateTree(lst):
new_tree = {}
for list_item in lst:
currTree = new_tree
for key in list_item[::-1]:
if key not in currTree:
currTree[key] = {}
currTree = currTree[key]
return new_tree
# Given list
listA = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
print(CreateTree(listA))執行以上程式碼將得到以下結果:
輸出
{'X': {'Y': {}, 'Z': {'P': {}}}}使用 reduce 和 getitem
我們使用 functools 和 operator 模組來獲取函式 reduce 和 getitem。使用這些函式,我們定義兩個函式來從列表中獲取專案並將專案設定到樹結構中。這裡我們也使用切片方法反轉列表的元素,然後應用兩個建立的函式來建立元素為樹結構的字典。
示例
from functools import reduce
from operator import getitem
def getTree(tree, mappings):
return reduce(getitem, mappings, tree)
def setTree(tree, mappings):
getTree(tree, mappings[:-1])[mappings[-1]] = dict()
# Given list
lst = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
tree = {}
for i in lst:
setTree(tree, i[::-1])
print(tree)執行以上程式碼將得到以下結果:
輸出
{'X': {'Y': {}, 'Z': {'P': {}}}}
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP