2011-02-12 45 views
2

我聽說,元組元素取低的空間,但不能被修改,那麼什麼是執行時間的最佳解決方案:元組VS在哈希表的Python陣列

hash = {} 
hash['foo'] = [34,'foobar',[55,90]] 
hash['foo'][0] = hash['foo'][0] + 17 

OR

hash = {} 
hash['foo'] = (34,'foobar',[55,90]) 
hash['foo'] = (hash['foo'][0] + 17,hash['foo'][1],hash['foo'][2]) 
+3

1.不要像這樣微觀優化。 2.提供一些要求。對於應該發生的事情沒有任何要求,**所有**數據結構同樣好。 – 2011-02-12 13:10:26

回答

6

首先,不要撥打字典hash。它陰影內置hash

在這兩種情況下,如果你刪除的最後一行,然後時間碼的值是:

0.545173168182 # list 
0.479876995087 # tuple 

,這是預期的行爲。因爲創建tuple比創建列表要快。

$ python -mtimeit 'l=[]' 
10000000 loops, best of 3: 0.053 usec per loop 
$ python -mtimeit 't=()' 
10000000 loops, best of 3: 0.026 usec per loop 

但在你的情況,採取第三行。您創建新的foo密鑰,因爲您無法修改tuple,因此比list示例需要更多的時間。

0.911674976349 # list 
1.1165189743 # tuple 

另一個說明,時間差異是微觀優化。鑑於差別很小,你不應該擔心它們。

+0

感謝您的回答!即使我將修改超過1,000,000個元組/列表:)?我的字典是巨大的 – JohnJohnGa 2011-02-12 12:10:07