【发布时间】:2016-11-03 12:08:14
【问题描述】:
我对字典和哈希表有些困惑,我想澄清一下。假设我有当前字典和当前 python 运行的哈希的当前输出。
Dict = dict()
print(hash('a'))
print(hash('b'))
print(hash('c'))
Dict['a'] = 1
Dict['b'] = 2
Dict['c'] = 3
print(Dict)
有输出
1714333803
1519074822
1245896149
{'a': 1, 'c': 3, 'b': 2}
所以据我所知,哈希表只是一个数组,其中哈希是哈希表的索引。例如,“a”的哈希值为 1714333803,因此我的哈希表索引 1714333803 的值为“a”。所以我很困惑哈希表有多少索引以及哈希函数如何产生答案?它是否使用模数并具有固定范围的索引?因为字典的给定打印输出{'a': 1, 'c': 3, 'b': 2},但是假设即使它输出,字典实际上是一个至少有 1714333803 个索引的数组是否正确,因为包含 3 个元素并且更不用说包含多少太浪费空间了。同样对于哈希表,索引中没有值的内容是什么,null?
【问题讨论】:
-
您可以动态调整数组的大小。但是,它必须重新计算每个键的哈希值。这个链接看起来很有趣laurentluce.com/posts/python-dictionary-implementation
-
“没有价值的索引,null”是什么意思?没有哈希的键?或者数组中没有被填充的位置?
-
也可以观看此视频:youtube.com/watch?v=C4Kc8xzcA68
标签: python dictionary hashtable space