【发布时间】:2011-01-04 21:30:40
【问题描述】:
我一直使用字典。我用 Python 编写代码。
【问题讨论】:
标签: python data-structures hash dictionary hashtable
我一直使用字典。我用 Python 编写代码。
【问题讨论】:
标签: python data-structures hash dictionary hashtable
字典是将键映射到值的一般概念。有很多方法可以实现这样的映射。
哈希表是实现字典的特定方式。
除了哈希表,实现字典的另一种常见方式是red-black trees。
每种方法都有自己的优点和缺点。红黑树总是可以在 O(log N) 中执行查找。哈希表可以在 O(1) 时间内执行查找,但根据输入可能会降级到 O(N)。
【讨论】:
字典是一种将键映射到值的数据结构。
哈希表是一种数据结构,它通过获取键的哈希值(通过对其应用一些哈希函数)并将其映射到存储一个或多个值的存储桶来将键映射到值。
IMO 这类似于询问列表和链表之间的区别。
为了清楚起见,可能需要注意的是,Python 当前可能会使用哈希表来实现其字典,并且将来可能会出现 Python 改变这一事实而不会导致其字典不再是字典的情况。
【讨论】:
“字典”在编程中有几个不同的含义,wikipedia 会告诉你——“关联数组”,Python 使用该术语的意义(也称为“映射”)是其中之一这些含义(但密码猜测尝试中的“数据字典”和“字典攻击”也很重要)。
哈希表是重要的数据结构; Python 使用它们来实现两个重要的内置数据类型,dict 和 set。
因此,即使在 Python 中,您也不能将“哈希表”视为“字典”的同义词……因为类似的数据结构也用于实现“集合”!-)
【讨论】:
Python 字典在内部使用哈希表实现。
【讨论】:
字典和哈希表都将键值对,以便在插入或删除或查找时进行快速的大 O 操作,不同之处在于哈希表使用哈希来存储(键,值)对,这就是我们可以更快地访问数据。 Python 将字典实现为哈希表,映射和集合是一种新的哈希表,在插入时考虑了顺序,您可以将任何类型的对象作为键... 由于顺序,最近列表和哈希表在 Python3 中更相似,请查看此以获取更多详细信息: https://softwaremaniacs.org/blog/2020/02/05/dicts-ordered/en/
【讨论】:
哈希表总是使用一些对值进行操作的函数来确定值的存储位置。字典(我相信你的意思)是一个更通用的术语,只是表示一种查找机制,它可能是一个哈希表,或者可能由一个更简单的结构实现,在确定其存储位置时不考虑值本身。
【讨论】:
字典是使用哈希表实现的。在我看来,两者之间的区别可以被认为是堆栈和数组之间的区别,我们将使用数组来实现堆栈。
【讨论】: