我一直使用字典。我用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