python中唯一的映射类型是字典类型。它是通过hash表的方法实现的键值对的集合(内部无排序),可以通过键很快的查找到值得内容,并可以通过吊桶实现hash冲突的差异化。
一个字典类型可以表示为 key : value 这种形式,键值不可以是表达式,不支持序列中的拼接、重复这样类似操作。字典支持在一个字典中的主键类型不一致,但是不支持一个键对应多个值,在创建时可以定义多个相同键的条目,但只有最后一个生效。
字典的创建方式:
1.直接赋值: dic = { [key:value] }, []中的内容可以从0到无数个。
2.工厂方法赋值: dic =dict((['aa',1],['bb',2]))
3.创建值相同的键(默认值为None):dic = {}.fromkeys(('x','y'),-1)
字典的遍历:
for key indic.keys():
print('key = %s,value = %s' % (key,dic[key]))
dic[key]如果key为空,则报错,需要提前用has_key()判断。
字典支持的运算符有查找运算符([] )和关系运算符(in,not in)。
字典可以通过dic[key] = value 的方式增加或者更新键值,通过del dic[key]的方式删除某一条目,通过dic.clear()或者del dic 删除整个条目,通过dic.pop(key)的方式清楚某一个条目并返回此条目的值。
字典的比较方式cmp(dict1,dict2):两字典的大小,再比键,再比较值。注意的是:cmp()函数在3.6版本中已经被取消。
可以通过len()取得字典的大小
通过hash()可以获得一个对象的哈希值,若不可hash则报错,就不可作为键,例如表达式。通过表达式符号对两个对象进行比较运算,如果是相等的,那么他们的hash值必然相同,对自己写的对象可以重载__hash__()方法来达到自己想要的效果。
另外常见的内建函数:
dict1.update(dict2) | 将dict2的内容更新到dict1中 |
dict.copy() | 返回dict的一个浅拷贝 |
*欢迎大家关注我的个人微信公众号学习更多相关的知识:Opportunity_s
欢迎提出宝贵意见!
Opportunity的程序猿笔记