2011-04-17 174 views
0

我原本我的計劃,像這樣:Python的詞典列表

inst = {} 
class IContainer: 
    dicList = {} 


for i in range(10): 
     inst[i] = IContainer() 

def FindEnd(node): 
    if node.text != None: 
     inst[counter].dicList[node.tag] = node.text 
    else: 
     for subNode in node: 
      FindEnd(subNode) 

counter = 0 
for element in root: 
    if element.tag == "Items": 
     for subE in element: 
      if subE.tag == "Item": 
       for subSubE in subE: 
        FindEnd(subSubE, counter) 
       counter += 1 

的作品就好了,我是能夠解析的東西變成一本字典,我要創建列表,而不是動態的。

所以

counter = 0 
for element in root: 
    if element.tag == "Items": 
     for subE in element: 
      if subE.tag == "Item": 
       inst[counter] = IContainer() 
       for subSubE in subE: 
        FindEnd(subSubE) 
       for i in range(len(inst)): 
        print inst[i] 
        print inst[i].dicList 

       counter += 1 

當我運行與最終環的地址和數據被替換此

for i in range(len(inst)): 
    print inst[i] 
    print inst[i].dicList 

所有研究所....我沒有帶一個線索什麼錯。

回答

0

在你的情況,dicList類屬性,要在其中一個實例屬性。

類屬性只有一個對象可以引用(這正是您得到這些結果的原因),而實例屬性是在實例化時創建的,因此每個實例引用它們自己的dicList

所以你想使用實例屬性,你可以通過在構造函數中創建所述屬性來實現它。

class IContainer: 
    def __init__(self): 
     self.dicList = {} 
1

dicList是一個類屬性。

class IContainer: 
    def __init__(self): 
     self.dicList = {}