Python--映像和集合类型(字典)
来源:互联网 发布:数据库原理 pdf 编辑:程序博客网 时间:2024/05/21 19:47
***********************************************************如果没明确定义,默认集合类型是元组。最好显示的创建元组。***********************************************************字典:不可变对象的值是不可改变的,意味着他们通过hash算法得到的总是一个值。这是作为字典键值的一个必要条件。工厂模式:工厂类内部包含了必要的逻辑判断,客户端只要提供选择条件即可,这样客户端就不需要知道具体产品的信息了。浅拷贝和深拷贝浅拷贝:字符串被显式的拷贝,并新创建了一个字符串对象,列表元素只是把它的引用复制了一下,并不是它的成员。浅拷贝的对象本身是新的,但它的内容不是。序列类型对象的钱靠背是默认类型拷贝,有以下实施方式:完全切片操作、利用工厂函数(list、dict等)、使用copy模块的copy函数。>>> person = ['name',['savings',100.00]]>>> hubby = person[:]>>> wifey = list(person)>>> [id(x) for x in person,hubby,wifey][42230368, 42221736, 42221856]>>> hubby[0] = 'joe'>>> wifey[0] = 'Jane'>>> hubby,wifey(['joe', ['savings', 100.0]], ['Jane', ['savings', 100.0]])>>> hubby[1][1] = 30.00>>> hubby,wifey(['joe', ['savings', 30.0]], ['Jane', ['savings', 30.0]])
深拷贝:创建一个新的容器对象,包含原有对象元素(引用)全新拷贝的引用>>> person = ['name',['savings',100.00]]>>> hubby = person>>> import copy>>> wifey = copy.deepcopy(person)>>> [id(x) for x in person,hubby,wifey][42225376, 42225376, 42230328]>>> hubby[0] = 'joe'>>> wifey[0] = 'Jane'>>> hubby,wifey(['joe', ['savings', 100.0]], ['name', ['savings', 100.0]])>>> hubby[1][1] = 30.00>>> hubby,wifey(['joe', ['savings', 30.0]], ['name', ['savings', 100.0]])>>>
*********************************************************************
非容器类型(数字、字符、字符串等)没有被拷贝一说,浅拷贝是用完全切片操作完成的。
(python的容器主要包含列表列表,字典)
如果元组变量只包含原子类型对象(代码、类型、xrange等),对他的深拷贝将不会进行。如果把账户信息改成元组类型,那也只能得到一个浅拷贝。(元组无法进行深拷贝)
********************************************************************
用工厂方法创建字典>>> fdict = dict((['x',1],['y',2]))>>> fdict{'y': 2, 'x': 1}
用内建方法创建“默认字典”,字典中元素具有相同的值(若没给出,默认为None)>>> fdict = dict((['x',1],['y',2]))>>> fdict{'y': 2, 'x': 1}>>>
通过迭代器访问类序列对象>>> for key in dict2:print 'key=%s,value=%s' %(key,dict2[key])key=name,value=earthkey=port,value=80
字典中混用数字和字符串>>> dict3 = {}>>> dict3[1] = 'abc'>>> dict3['1'] = 3.14159>>> dict3[3.2] = 'xyz'>>> dict3{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}>>>
更新字典
添加一个数据项或新元素、修改一个已存在的数据项、删除一个已存在的数据项>>> >>> dict2 = {'name':'earth','port':80}>>> dict2['name'] = 'venus' #更新已有条目>>> dict2['arch'] = 'sunos5' #增加新条目>>> print 'host %(name)s is running on port %(port)d' %dict2host venus is running on port 80>>> del dict2['name'] #删除键为“name”的条目>>> dict2.clear() #删除字典中所有条目>>> del dict2 #删除整个字典
****************************
注意字典元素打印的方法
****************************
字典的比较算法
首先是字典大小,然后是键,最后是值。
映射类型相关函数
工厂函数被用来创建字典。如果不提供参数,会生成空字典。>>> dict(zip(('x','y'),(1,2))){'y': 2, 'x': 1}>>> dict([['x',1],['y',2]]){'y': 2, 'x': 1}>>> dict([('xy'[i-1],i) for i in range(1,3)]){'y': 2, 'x': 1}>>> dict(x=1,y=2){'y': 2, 'x': 1}>>> dict8 = dict(x=1,y=2)>>> dict8{'y': 2, 'x': 1}>>> dict9 = dict(**dict8) #效率低,不采用,宜用copy>>> dict9{'y': 2, 'x': 1}>>> dict9 = dict8.copy()>>> dict9{'y': 2, 'x': 1}>>>
映射类型内建方法-返回字典的值>>> dict2 = {'name':'earth','port':80}>>> dict2.keys()['name', 'port']>>> dict2.values()['earth', 80]>>> dict2.items()[('name', 'earth'), ('port', 80)]
字典提供的方法
dict.clear():删除字典中所有元素
dict clear():返回字典(浅复制)的一个副本
dict.fromkeys(seq,val = None):创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None)。>>> {}.fromkeys('xyz'){'y': None, 'x': None, 'z': None}>>> {}.fromkeys(('love','honor'),True){'love': True, 'honor': True}dict.get(key,default=None):对字典dict中的键key,返回它对应的值value,如果字典中不存在此键,返回default的值(默认为None)dict.items(key):返回包含字典中键、值对元组的列表dict.keys():返回一个包含字典中键的列表dict2.values():返回一个包含字典中所有值的列表dict.pop(key[,default]):若存在key键,删除并返回其值,若不存在,且没有给出default值,则引发KeyError异常dict.setdefault(key,default=None):查找键为key的值,若存在,返回其值,若不存在,赋值default>>> mudict = {'host':'earth','port':80}>>> mudict.keys()['host', 'port']>>> mudict.setdefault('port',8080)80dict.update(dict2):将字典dict2的键值对添加到字典dict
字典的键必须可哈希
作为键的Python对象必须是可哈希的对象,列表和字典这种可变类型不能作为键。
值相等的数字键值是相同的,整型1和浮点数1.0的哈希值相同,为相同的键。
0 0
- Python--映像和集合类型(字典)
- python映像和集合类型
- Python:映像和集合类型
- Python核心编程----映像和集合类型
- python的序列,映像和集合类型
- 映像和集合类型
- 映像和集合类型
- [Language]Python映像与集合--字典
- Python核心编程(第七章)--映像和集合类型
- python核心编程(第二版)参考答案(自制)--第七章·映像和集合类型
- Swift集合类型(数组和字典)
- Swift集合类型(数组和字典)
- python字典和集合
- Python字典和集合
- Python字典和集合
- Python字典和集合
- **PYTHON** 字典和集合
- Python字典和集合
- 阅读一款3D引擎的方法备忘
- 跟客户谈需求时,应注意什么
- 这里只是记录我的学习历程,技术有限,仅用于备份和分享
- 微信开发总结
- uim详解-5(卡上操作系统cos)
- Python--映像和集合类型(字典)
- git文件状态流程图详细介绍
- 使用glide加载图片
- 通过模拟实验脚本还原阿里巴巴的四个苦逼小朋友抢购月饼现场
- ios通过PCM计算声音分贝大小
- 项目如何开始:怎样和客户谈需求(转)
- 自定义WIFI正在连接View 动态效果
- jenkins从git拉代码时超时解决办法
- 画布和绘图(Canvas and Drawables)