2012-06-26 49 views
-1

我正在寫兩個anidated類一個字典是另一個列表? 具有與第二麻煩的說, 的字典可以作爲未來,使用Python中的類列表和字典實現數據樹

class Field(dict):   
    def __keys__(self): 
     self.k = self.keys() 
     return list(self.k) 

    def __setattr__(self, attr, value): 
     self[attr] = value 

想我,而不是添加在明年的,

class Store(list): 

,而不是我想用同樣的高性能dict()與一些索引對象 和列表子參數

什麼是最正確的方式來實現數據樹?有任何想法嗎?

+0

您的'Field'類只是一個字典的新名稱,因爲它似乎沒有做任何新的事情。不知道你想要用'Store'類做什麼。你能否澄清你想要達到的目標?什麼意思是「使用相同的高性能字典()」? – Toote

+0

我很困惑你的問題。你真的需要做什麼?按位置和按鍵訪問一些對象的集合?如果我接近標準,可能會有更簡單的方法去解決這個問題。如果不是,你能澄清一些嗎?我真的無法概念化你想要達到的目標。 –

回答

2

我打算回答。我想認爲你想快速訪問一些對象集合,同時能夠保持它們的順序。你可能能夠逃脫像ordereddict一樣簡單的事情。如果沒有,這樣的事情可能會接近。這取決於你的數據。

class Container(object): 
    def __init__(self): 
    self.data = [] 
    self.byid = {} 

    def setData(self, listofdicts): 
    for item in listofdicts: 
     id = item['id'] # Something here that's meaningful. 
     self.data.append(item) 
     self.byid[id] = item 

    def getByPos(self, idx): 
    return self.data[idx] 

    def getById(self, itemid): 
    return self.byid[itemid] 
+0

這對我來說非常吝嗇,但我仍然試圖以更原子的方式編寫對象類,而我已經準備好每個語句我寧願用字符處理字典.__ iter__,而不是使用十分之一。對於每次我需要另一個數據實例,你知道我的意思嗎?無論如何,這看起來很專業,我會考慮和回信謝謝你! – sphericsf