您的位置:首页 > 编程语言 > Python开发

python实现哈希表存储——实现了存放字典中的英文串,采用最简单的哈希函数实现

2019-04-04 16:24 393 查看
  1. python中哈希表就是字典啊,还怎么实现呢?
  2. 存储10位同学,每位同学有姓名、籍贯和成绩
  3. 直接实现哇,好像也没啥可以写的
stu = {'z1': ('sx', 96), 'z2': ('sd', 97), 'z3': ('sx', 97),}
stu.update({'z4': ('sd', 100),}) #直接更新,如果已经有会覆盖
print(stu)
print(stu.get('z4'))
print(stu.has_key('z4'))
print(stu.items()) #返回字典键,值,按照列表形式存
print(stu.keys()) #返回字典键
print(stu.values()) #返回字典值
print(stu.pop('z1')) #返回弹出的键对应的值
print(stu)
{'z4': ('sd', 100), 'z1': ('sx', 96), 'z2': ('sd', 97), 'z3': ('sx', 97)}
('sd', 100)
True
[('z4', ('sd', 100)), ('z1', ('sx', 96)), ('z2', ('sd', 97)), ('z3', ('sx', 97))]
['z4', 'z1', 'z2', 'z3']
[('sd', 100), ('sx', 96), ('sd', 97), ('sx', 97)]
('sx', 96)
{'z4': ('sd', 100), 'z2': ('sd', 97), 'z3': ('sx', 97)}
  1. 那还有个问题,自己怎么实现?汉字编码还是太复杂了,我们就操练下英文的哇,转化思路很简单:每个英文字母取出来,比如:‘cs’,怎么转化为数字呢?
  2. c对应数字99,s对应数字115,那么根据10进制计算可以知道cs=99*10+115=1105,反过来转化的时候也要这样拆开来哈。
  3. 代码写的不精炼,就是为了实现作业题,没别的想法,所以实现为主了:
def str2num(key):
num = 0
for sy, z in enumerate(key[-1::-1]): #字符串逆序,为了便于计算数字
num += ord(z) *pow(10, sy)
print(sy, z)
print(num)
return num

ld = {'cs': 'tqinghua university', 'al': 'peking university',}
keys = ld.keys()
sy = {}
for key in keys:
sy[key] = str2num(key)
print(sy)

结果输出:

{'cs': 1105, 'al': 1078}

  1. 接下来进入这个作业题,自己实现哈希表,直接用取余运算实现哈希函数,超级简单
    print(1105 % 13)
    ,结果为
    0
  2. 这样就可以将cs存放再第0个位置了,打完收工!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: