字典和哈希表之间的真正区别是什么?

时间:2010-01-13 23:53:47

标签: python data-structures hash dictionary hashtable

我一直用词典。我用Python写作。

6 个答案:

答案 0 :(得分:176)

字典是将键映射到值的一般概念。有很多方法可以实现这种映射。

哈希表是实现字典的特定方式。

除了哈希表之外,另一种实现字典的常用方法是red-black trees

每种方法都有自己的优点和缺点。红黑树总是可以在O(log N)中执行查找。哈希表可以在O(1)时间内执行查找,但根据输入,它可以降级为O(N)。

答案 1 :(得分:25)

字典是将键映射到值的数据结构。

哈希表是一种数据结构,它通过获取键的哈希值(通过对其应用一些哈希函数)将键映射到值,并将其映射到存储一个或多个值的存储区。

IMO这类似于询问列表和链表之间的区别。

为了清楚起见,可能需要注意的是,Python当前可能是使用散列表实现其字典的情况,并且未来可能会出现Python改变这一事实而不会导致其字典停止成为字典的情况。

答案 2 :(得分:16)

“字典”在编程中有一些不同的含义,正如wikipedia将告诉你的那样 - “关联数组”,Python使用该术语的意义(也称为“映射”),其中一个含义(但“数据字典”和密码猜测尝试中的“字典攻击”也很重要)。

哈希表是重要的数据结构; Python使用它们来实现两个重要的内置数据类型dictset

因此,即使在Python中,也不能将“哈希表”视为“词典”的同义词...因为类似的数据结构也用于实现“集合”! - )

答案 3 :(得分:9)

Python字典在内部使用哈希表实现。

答案 4 :(得分:1)

哈希表总是使用对值进行操作的某个函数来确定值的存储位置。字典(我相信你想要它)是一个更通用的术语,它只是表示一种查找机制,它可能是一个哈希表,或者可能是由一个更简单的结构实现的,该结构在确定其存储位置时不考虑值本身。

答案 5 :(得分:0)

使用哈希表实现Dictionary。在我看来,2之间的区别可以被认为是Stacks和Arrays之间的区别,我们将使用数组来实现Stacks。