What is the true difference between a dictionary a

2019-01-30 08:48发布

I've always used dictionaries. I write in Python.

6条回答
爷的心禁止访问
2楼-- · 2019-01-30 08:53

A dictionary is a general concept that maps keys to values. There are many ways to implement such a mapping.

A hashtable is a specific way to implement a dictionary.

Besides hashtables, another common way to implement dictionaries is red-black trees.

Each method has it's own pros and cons. A red-black tree can always perform a lookup in O(log N). A hashtable can perform a lookup in O(1) time although that can degrade to O(N) depending on the input.

查看更多
ゆ 、 Hurt°
3楼-- · 2019-01-30 08:55

"A dictionary" has a few different meanings in programming, as wikipedia will tell you -- "associative array", the sense in which Python uses the term (also known as "a mapping"), is one of those meanings (but "data dictionary", and "dictionary attacks" in password guess attempts, are also important).

Hash tables are important data structures; Python uses them to implement two important built-in data types, dict and set.

So, even in Python, you can't consider "hash table" to be a synonym for "dictionary"... since a similar data structure is also used to implement "sets"!-)

查看更多
霸刀☆藐视天下
4楼-- · 2019-01-30 08:56

A dictionary is a data structure that maps keys to values.

A hash table is a data structure that maps keys to values by taking the hash value of the key (by applying some hash function to it) and mapping that to a bucket where one or more values are stored.

IMO this is analogous to asking the difference between a list and a linked list.

For clarity it may be important to note that it MAY be the case that Python currently implements their dictionaries using hash tables, and it MAY be the case in the future that Python changes that fact without causing their dictionaries to stop being dictionaries.

查看更多
SAY GOODBYE
5楼-- · 2019-01-30 08:58

A Python dictionary is internally implemented with a hashtable.

查看更多
贪生不怕死
6楼-- · 2019-01-30 09:01

A hash table always uses some function operating on a value to determine where a value will be stored. A Dictionary (as I believe you intend it) is a more general term, and simply indicates a lookup mechanism, which might be a hash table or might be implemented by a simpler structure which does not consider the value itself in determining its storage location.

查看更多
叼着烟拽天下
7楼-- · 2019-01-30 09:06

Dictionary is implemented using hash tables. In my opinion the difference between the 2 can be thought of as the difference between Stacks and Arrays where we would be using arrays to implement Stacks.

查看更多
登录 后发表回答