抽象数据类型映射-------ADT Map

抽象数据类型"映射"-------ADT Map

python 最有用的数据类型之一: ‘字典’

字典是一种可以保存key-value键值对的数据类型,其中关键码key可用于查询关联的数据值data,这种键值关联的方法称为"映射Map"

ADT Map的结构时键-值关联的无序集合:

  1. 关键码具有唯一性
  2. 通过关键码可以唯一确定一个数据值

ADT Map定义的操作如下:

Map():创建一个空映射,返回空映射对象;

put(key,val): 将key-val关联对加入映射中,如果key已存在,将val替换旧关联值;

get(key):给定key,返回关联的数据值,如不存在,则返回None

del: 通过del map[key]的语句形式删除key-val关联

len():返回映射中key-val关联的数目;

in: 通过 key in map的语句形式,返回key是否存在于关联中,布尔值

使用字典的优势在于,给定关键码key,能够很快得到关联的数据值data,为了达到快速查找的目标,需要一个支持高效查找的ADT实现,可以采用列表数据结构加顺序查找或者二分查找,当然,更为合适的是使用散列表来实现,这样查找可以达到最快O(1)的性能,

下面,我们用一个HashTable类来实现ADT Map,该类包含了两个列表作为成员, 其中一个slot列表用于保存key,另一个平行的data列表用于保存数据项

在slot列表查找到一个key的位置以后,在data列表对应相同位置的数据项即为关联数据

H = HashTable()
H[54] = "cat"
H[26] = "dog"
H[93] = "lion"
H[17] = "tiger"
H[77] = "bird"
H[31] = "cow"
H[44] = "goat"
H[55] = "pig"
H[20] = "chicken"
print(H.slots)
print(H.data)
print(H[20])
print(H[17])
H[20] = 'duck'
print(H[20])
print(H[99])

保存key的列表就作为散列表来处理,这样可以迅速查找到指定的key

注意散列表的大小,虽然可以是任意数,但考虑到要让冲突解决算法能有效工作,就应该选择素数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值