字典和哈希表的真实区别是什么?
我一直在用字典。我是在用Python编程。
7 个回答
19
在编程中,“字典”这个词有几种不同的意思,正如维基百科所说的那样。Python中提到的“字典”指的是“关联数组”,也可以叫做“映射”。不过,还有其他重要的意思,比如“数据字典”和“字典攻击”,后者是指猜密码时的攻击方式。
哈希表是一种重要的数据结构;Python用它来实现两个非常重要的内置数据类型,分别是dict
(字典)和set
(集合)。
所以,即使在Python中,你也不能把“哈希表”和“字典”当作同义词来看待……因为类似的数据结构也被用来实现“集合”!-)
40
字典是一种数据结构,它把“键”对应到“值”。
哈希表也是一种数据结构,它通过对键进行哈希处理(也就是用某种哈希函数计算出一个值)来把键对应到一个存放一个或多个值的桶里。
我觉得这就像在问列表和链表之间的区别。
为了更清楚地说明,值得注意的是,当前Python可能是用哈希表来实现字典的,但将来Python可能会改变这个实现方式,而不影响字典的基本功能。
258
字典是一种通用的概念,用来将“键”对应到“值”。简单来说,就是用一个东西(键)去找到另一个东西(值)。
哈希表是一种实现字典的具体方法。
除了哈希表,另一种常见的实现字典的方法是红黑树。
每种方法都有自己的优缺点。红黑树在查找时总是能在O(log N)的时间内完成。而哈希表在查找时可以在O(1)的时间内完成,不过根据输入的不同,有时可能会变成O(N)。