我一直使用字典。我用Python編寫。字典和哈希表之間的真正區別是什麼?
回答
字典是將鍵映射到值的一般概念。有很多方法可以實現這樣的映射。
散列表是一種實現字典的特定方式。
除了哈希表,實現字典的另一種常見方式是red-black trees。
每種方法都有自己的優點和缺點。紅黑樹總是可以在O(log N)中執行查找。哈希表可以在O(1)時間內執行查找,儘管根據輸入它可能會降級爲O(N)。
Python字典是在內部使用散列表實現的。
dict的子類不是字典的Python實現;這是你自己的。 – 2010-01-14 03:33:11
字典是將鍵映射到值的數據結構。
哈希表是一種數據結構,它通過獲取密鑰的哈希值(通過對其應用一些哈希函數)並將其映射到存儲一個或多個值的存儲桶來將密鑰映射到值。
IMO類似於詢問列表和鏈表之間的區別。
爲了清楚起見,可能很重要的一點是,它可能是Python當前使用散列表實現它們的字典的情況,並且在將來Python可以改變該事實而不會導致它們的字典停止成爲字典。
主要區別是字典是否也存儲密鑰?因此,您可以查詢字典中的密鑰 - 您無法查找散列表 – 2010-01-14 00:24:01
@Martin Beckett:沒有。兩者都可以存儲密鑰。字典是一般的。哈希表是一般概念的具體實現。 – 2010-01-14 00:24:53
@馬丁貝克特:嗯,有趣的一點。字典存儲密鑰和哈希表是不是一定是這種情況? Java的'Hashtable'存儲密鑰 - 它不是一個哈希表,然後呢? – danben 2010-01-14 00:28:22
「字典」在編程中有幾個不同的含義,因爲wikipedia會告訴你 - 「關聯數組」,Python使用該術語(也稱爲「映射」)的意義是其中之一意義(但在密碼猜測嘗試中的「數據字典」和「字典式攻擊」也很重要)。
散列表是重要的數據結構; Python使用它們來實現兩個重要的內置數據類型,dict
和set
。
所以,即使是在Python中,你可以不考慮「哈希表」是爲「字典」的代名詞......因爲類似的數據結構也可以用來實現「套」 - - !)
Dictionary是使用散列表實現的。在我看來,2之間的區別可以認爲是Stacks和Arrays之間的區別,我們將使用數組來實現Stack。
哈希表總是使用某個函數對某個值進行操作來確定值的存儲位置。一個字典(我相信你打算這麼做)是一個更通用的術語,並且簡單地表示一個查找機制,它可能是一個哈希表,或者可能由一個簡單的結構實現,該結構在確定其存儲位置時並未考慮該值本身。
- 1. 一致哈希和錐哈希之間的區別是什麼?
- 2. 哈希映射,哈希集合,哈希字典之間有什麼區別?
- 3. ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT之間的真正區別是什麼?
- 4. Perl中的哈希和哈希引用有什麼區別?
- 5. 哈希表和隨機訪問表之間的區別
- 6. DOMContentLoaded vs window.onload。這兩者之間的真正區別是什麼?
- 7. window.prompt和prompt之間有什麼真正的區別?
- 8. 哈希映射和併發哈希映射有什麼區別?
- 9. DBNull.Value和null之間的真正區別?
- 10. AsyncTask和Thread之間的真正區別
- 11. 正則表達式中(。*)和(。*?)之間的區別是什麼?
- 12. $(())和expr之間的區別是什麼?
- 13. $和$ .fn之間的區別是什麼?
- 14. ++和:haskell之間的區別是什麼?
- 15. $(「」)和$ .find(「」)之間的區別是什麼?
- 16. 「\」和「\。」之間的區別是什麼?
- 17. 「$ | ++」和「$ | = 1」之間的區別是什麼
- 18. $(...)和`...`之間的區別是什麼
- 19. .equals()和==之間的區別是什麼?
- 20. [undefined]和[,]之間的區別是什麼?
- 21. 哈希與MAC(消息驗證碼)之間的區別是什麼?
- 22. 地圖和字典之間的區別
- 23. memcache和python字典之間的區別
- 24. 對象和字典之間的區別?
- 25. 正常運行時間和uptime_since_flush_status之間的區別是什麼
- 26. in ionic 2指令,屬性和屬性之間的真正區別是什麼?
- 27. UI之間真正的概念區別是什麼:裝飾和UI:包括?
- 28. Ruby的哈希和ActiveSupport的Hash之間的區別WithIndifferentAccess
- 29. ConcurrentHashMap和哈希表的區別
- 30. JavaScript的哈希表/字典
我希望我可以多投一票。 – LJM 2010-01-14 00:41:21
我會重新爲您提供幫助。 – 2010-01-14 02:12:23