我一直用词典。我用Python写作。
答案 0 :(得分:176)
字典是将键映射到值的一般概念。有很多方法可以实现这种映射。
哈希表是实现字典的特定方式。
除了哈希表之外,另一种实现字典的常用方法是red-black trees。
每种方法都有自己的优点和缺点。红黑树总是可以在O(log N)中执行查找。哈希表可以在O(1)时间内执行查找,但根据输入,它可以降级为O(N)。
答案 1 :(得分:25)
字典是将键映射到值的数据结构。
哈希表是一种数据结构,它通过获取键的哈希值(通过对其应用一些哈希函数)将键映射到值,并将其映射到存储一个或多个值的存储区。
IMO这类似于询问列表和链表之间的区别。
为了清楚起见,可能需要注意的是,Python当前可能是使用散列表实现其字典的情况,并且未来可能会出现Python改变这一事实而不会导致其字典停止成为字典的情况。
答案 2 :(得分:16)
“字典”在编程中有一些不同的含义,正如wikipedia将告诉你的那样 - “关联数组”,Python使用该术语的意义(也称为“映射”),其中一个含义(但“数据字典”和密码猜测尝试中的“字典攻击”也很重要)。
哈希表是重要的数据结构; Python使用它们来实现两个重要的内置数据类型dict
和set
。
因此,即使在Python中,也不能将“哈希表”视为“词典”的同义词...因为类似的数据结构也用于实现“集合”! - )
答案 3 :(得分:9)
Python字典在内部使用哈希表实现。
答案 4 :(得分:1)
哈希表总是使用对值进行操作的某个函数来确定值的存储位置。字典(我相信你想要它)是一个更通用的术语,它只是表示一种查找机制,它可能是一个哈希表,或者可能是由一个更简单的结构实现的,该结构在确定其存储位置时不考虑值本身。
答案 5 :(得分:0)
使用哈希表实现Dictionary。在我看来,2之间的区别可以被认为是Stacks和Arrays之间的区别,我们将使用数组来实现Stacks。