Python回顾与整理5:映像和集体类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python回顾与整理5:映像和集体类型相关的知识,希望对你有一定的参考价值。
0.说明
依然是按照前面介绍的几种序列类型的思路来总结字映像类型和集合类型,即先做一个介绍,再讨论可用操作符、工厂函数、内建函数和方法。
1.映射类型:字典
映射类型被称做哈希表,而Python中的字典对象就是哈希类型,即它是按照这样的方式来存储数据:(哈希表的算法)是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储对象的值。任何一个值存储的地址取决于它的键,正因为这种随意性,哈希表中的值是没有顺序的,所以Python中的字典对象中的元素也是无序的。
下面是字典的基本操作:
(1)创建字典和给字典赋值
主要的方法如下:
直接创建赋值:可整体赋值,也可以逐一添加键值对
工厂函数dict()
>>> fdict = dict(([‘xpleaf‘, ‘boy‘], [‘cl‘, ‘girl‘])) >>> fdict {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘}
内建函数fromkeys():创建默认字典,字典中元素具有相同的值(如果没有给出,默认为None)
>>> fdict = {}.fromkeys((‘xpleaf‘, ‘cl‘), ‘lovings‘) >>> fdict {‘xpleaf‘: ‘lovings‘, ‘cl‘: ‘lovings‘} >>> edict = {}.fromkeys((‘xpleaf‘, ‘cl‘)) >>> edict {‘xpleaf‘: None, ‘cl‘: None}
(2)访问字典中的值
循环字典的键
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘} >>> for key in fdict.keys(): ... print key, fdict[key] ... xpleaf boy cl girl
使用迭代器访问类序列对象
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘} >>> for key in fdict: ... print key, fdict[key] ... xpleaf boy cl girl
先判断键值是否存在再访问
>>> fdict = {‘xpleaf‘: ‘boy‘, ‘cl‘: ‘girl‘} >>> fdict.has_key(‘xpleaf‘) True >>> ‘xpleaf‘ in fdict True >>> ‘clyyh‘ in fdict False
(3)更新字典
可以更新已有的键值对或添加新的键值对:
>>> fdict = {‘host‘: ‘xpleaf‘, ‘port‘: 80} >>> fdict[‘port‘] = 3389 >>> fdict[‘ip‘] = ‘121.42.147.131‘ >>> print ‘host: %(host)s, port: %(port)s, ip: %(ip)s‘ % fdict host: xpleaf, port: 3389, ip: 121.42.147.131
(4)删除字典元素和字典
>>> fdict = {‘host‘: ‘xpleaf‘, ‘port‘: 80, ‘ip‘: ‘121.42.147.131‘} >>> del fdict[‘port‘] #删除一个键值对 >>> fdict.clear() #删除字典中所有的键值对 >>> del fdict #删除整个字典
3.映射类型操作符
除了不支持拼接和重复,字典可以和所有的标准类型操作符一起工作。
(1)标准类型操作符
在《Python回顾与整理2:Python对象》中已经有介绍过标准类型操作符,它们对字典类型也是适合的,主要是:>、<、==和and等,如下:
>>> dict1 = {‘abc‘: 123} >>> dict2 = {‘abc‘: 456} >>> dict1 < dict2 True >>> dict1 == dict2 False
(2)映射类型操作符
字典的键查找操作符([])
对序列类型来说,用索引做唯一参数或下标以获取一个序列的值,但是对字典来说,是用键查询,键是参数,而不是索引。通过`[]`操作符,可以在字典中查找元素,也可以为某个元素赋值。
键成员关系操作(in、not in)
当然也可以用has_key()。
本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1753670
以上是关于Python回顾与整理5:映像和集体类型的主要内容,如果未能解决你的问题,请参考以下文章