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

本文介绍如何使用Python实现一个简单的哈希表,以存储英文字符串。通过将字母转换为数字并进行10进制计算确定哈希值,实现英文串到数字的映射。文中给出了具体的代码实现,利用取余运算作为哈希函数,达到存储和查找的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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个位置了,打完收工!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值