天天看點

python樹結構_Python中一個建立樹結構的方法。

最近在看一些Python算法有關的東西。

從最簡單的樹的實作說起,當樹這樣的資料結構被原型化,它往往會是一個非常有用且很靈活的類型。

這時候可以用一個Bunch的設計模式。

實作方式有很多,但是基本上都會具備以下要素:

# Bunch設計模式

class Bunch(dict):

def __init__(self, *args, **kwds):

super(Bunch, self).__init__(*args, **kwds)

self.__dict__ = self

你可以用指令行參數的形式建立相關對象,并設定任何屬性:

x = Bunch(name='He', position='Club')

print(x.name)

輸出結果:

He

由于它繼承自dict類,我們可以自然而然地獲得大量相關内容,比如相對屬性值的周遊,或者是是查詢一個屬性是否存在:

x = Bunch(name='He', position='Club')

print(x.name)

T = Bunch

t = T(left=T(left="a", right="b"), right=T(left="c"))

print(t.left)

print(t.left.left)

print(t['left']['right'])

print("left" in t.right)

print("right" in t.right)

輸出結果:

{'right': 'b', 'left': 'a'}

a

b

True

False

當然,該模式下不僅可用于樹結構的建立,如果你希望有一個靈活的對象,并且屬性可以從構造器中被動态設定時,也可以用該模式來實作。

謝謝各位關注,最近天氣轉冷,大家注意保暖,謹防感冒!