基于哈希表实现字典和集合

上一节说到了哈希表。

我们提到了字典和集合是由哈希表实现的,具体的实现过程是怎么样的呢?

其实很简单,字典里面有取值,添加值,正好对应的就是哈希表中的find和add方法。使用__getitem__和__setitem__代替两者就可以了。然后对于keys,values取值,只需要遍历循环就行了。

这里需要注意一点,由于字典是由哈希表实现的,那么字典的key值就必须是可哈希的,否则该key值无法用哈希函数进行解析。

而集合其实就是字典,在字典的基础上把所有key对应的value的值赋值1就行了,至于集合的各种方法,使用for循环判断就行了。

再说说个人对可变类型不可哈希的原因,因为使用哈希函数的时候,如果对一个可变类型进行哈希,那么原数据类型会得到相应的改变,既无法通过哈希值返回到该可变类型,或者是可变类型没有哈希的返回值?暂时想不通,以后系统的学数据结构再说!有知道的可以评论,前几个月学的时候还想通了,现在懵逼了。。。。。。

猜你喜欢

转载自www.cnblogs.com/chenyoude/p/9899721.html
今日推荐