Python实现映射抽象数据类型-字典

本文介绍了Python中字典作为映射抽象数据类型的应用,包括其无序、键唯一的特点,以及Map、put、get、del、len、in等操作。通过使用散列搜索算法,字典可以实现快速查找。文章还探讨了如何使用两个列表创建HashTable类来实现映射,包括hashfunction和rehash函数的实现,以及put和get方法的详细过程。
摘要由CSDN通过智能技术生成

《Python数据结构与算法分析》(第二版)

字典是最有用的Python集合之一,使用键-值对来存储数据,并且字典是无序的,键是不重复的。键用来查找关联的值,这一概念常常称作映射

映射支持以下操作:

  • Map()创建一个空的映射,它返回一个空的映射集合。
  • put(key, val)往映射中加入一个新的键-值对。如果键已经存在,就用新值替换旧值。
  • get(key)返回key对应的值。如果可以不存在,则返回None。
  • del 通过del map[key]这样的语句从映射中删除键-值对。
  • len()返回映射中存储的键-值对的数目。
  • in通过key in map这样的语句,在键存在时返回True,否则返回False。

使用字典的一大优势是,给定一个键,能很快地找到其关联的值。为了提高搜索效率,可以使用散列搜索算法,其时间复杂度可以达到O(1)。

1.使用两个列表创建HashTable类来实现映射抽象数据类型。

class HashTable:
    def __init__(self):# HashTable类的构造方法
        self.size = 11# 散列表的初始大小设置为素数,可以尽可能提高冲突处理算法的效率
        self.slots = [None] * self.size# 设置一个名为slots的列表,用来存储键,并初始化为None
        self.data = [None] * self.size# 设置一个名为data的列表,用来存储值,并初始化为None 
          
  1. 实现名为hashfunction的散列函数,要存储或查找的键对散列表的大小进行取余运算。处理冲突时,用一个名为rehash的散列函数实现‘加1’再散列函数的线性探测法。
    def hashfunction(self, key, size):
        return key % size

    def rehash(self, oldhash, size):
        return (oldhash+1) % size# oldhash为hashfunction()返回的值,但由于该位置上已经有了键,所以发生了冲突&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值