当前位置: 首页 > 图灵资讯 > 行业资讯> python哈希散列的映射

python哈希散列的映射

来源:图灵python
时间: 2024-07-21 20:38:31

1、散列的映射

Map()创建空映射,然后返回空映射集合。

在put(key,val)在映射中添加新的键值对。若键已存在,则用新值代替旧值。

get返回key对应的值。如果key不存在,返回none。

del通过del map[key]语句从映射中删除键-值对。

len()返回映射中存储的键-值对数。

当键存在时,in通过keyinmap等语句返回True,否则返回False。

2、实例

classMap(object):
def__init__(self,size=11):
self.size=size
self.__slots=[None]*self.size
self.__data=[None]*self.size

defput(self,key,val):
hashvalue=self.hashfunction(key,len(self.__slots))
ifself.__slots[hashvalue]==None:
self.__slots[hashvalue]=key
self.__data[hashvalue]=val
else:
ifself.__slots[hashvalue]==key:
self.__data[hashvalue]=val
else:
nextslot=self.rehash(hashvalue,len(self.__slots))
whileself.__slots[nextslot]!=Noneandself.__slots[nextslot]!=key:
nextslot=self.rehash(nextslot,len(self.__slots))
ifself.__slots[nextslot]==None:
self.__slots[nextslot]=key
self.__data[nextslot]=val
else:
self.__data[nextslot]=val

defget(self,key):
startslot=self.hashfunction(key,len(self.__slots))
data=None
stop=False
found=False
position=startslot
whileself.__slots[position]!=Noneand\
notfoundandnotstop:
ifself.__slots[position]==key:
found=True
data=self.__data[position]
else:
position=self.rehash(position,len(self.__slots))
ifposition==startslot:
stop=True
returndata
defdelete(self,key):
pass
def__getitem__(self,key):
returnself.get(key)

def__setitem__(self,key,val):
self.put(key,val)
def__delitem__(self,key):
self.delete(key)

deflen(self):
pass

defhashfunction(self,key,size):
returnkey%size

defrehash(self,oldhash,size):
return(oldhash+1)%size

上面是python哈希散列的映射,希望对大家有所帮助。更多Python学习指导:python基础教程