Python 学习笔记(九)Python元组和字典(三)
2018-06-18 01:52:43来源:未知 阅读 ()
字典常用方法
copy() 返回一个字典的浅复制
示例:浅拷贝d.copy()
深拷贝引入import copy copy.deepcopy()
1 >>> help(dict.copy) #help()查看dict.copy的详细内容 2 Help on method_descriptor: 3 4 copy(...) 5 D.copy() -> a shallow copy of D #字典d的浅拷贝 6 7 >>> d ={"name":"python","web":"www.baidu.com"} 8 >>> e =d 9 >>> e 10 {'web': 'www.baidu.com', 'name': 'python'} 11 >>> d 12 {'web': 'www.baidu.com', 'name': 'python'} 13 >>> id(e) 14 49259112L 15 >>> id(d) #可以看出e和d在内存中地址相同,e和d引用的是同一个对象 16 49259112L 17 >>> f=d.copy() #字典d的浅复制 18 >>> f 19 {'web': 'www.baidu.com', 'name': 'python'} 20 >>> id(f) #可以看出f与上面的e和d的内存地址不同,f创建了新的字典对象 21 13708552L 22 >>> d["lang"]="python" #向字典d中添加一个对象,d中发生了变化,字典f并没有收到影响,说明字典f是一个新的字典对象,d 和f 是两个不同的对象 23 >>> d 24 {'lang': 'python', 'web': 'www.baidu.com', 'name': 'python'} 25 >>> f 26 {'web': 'www.baidu.com', 'name': 'python'} 27 >>> d={"name":"zhangsan","enjoy":["python","tea","book"]} #新建一个字典 28 >>> e =d.copy() #对字典进行copy 29 >>> id(d),id(e) #看出他俩的内存地址不同,是两个不同的对象 30 (13708280L, 13719208L) 31 >>> d["enjoy"] #从字典d中取出enjoy所对应的列表的值 32 ['python', 'tea', 'book'] 33 >>> d["enjoy"].remove("book") #将字典d中key为enjoy,值为book的元素移除 34 >>> d #d 中的book已经被移除 35 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 36 >>> e #e中的book也被移除了 37 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 38 >>> id(d["enjoy"]) #查看d['enjoy']的内存地址 与e['enjoy']的内存地址相同,说明是同一对象,copy只进行了浅拷贝,并没有对enjoy列表进行拷贝,只是引用 39 49135752L 40 >>> id(e["enjoy"]) 41 49135752L 42 >>> import copy #引入copy模块进行 深拷贝 43 >>> d 44 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 45 >>> z =copy.deepcopy(d) #深拷贝 46 >>> z 47 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 48 >>> id(d),id(z) #可看出d和z 是不同的两个对象 49 (13708280L, 13720296L) 50 >>> id(d['enjoy']),id(z['enjoy']) #可看出d['enjoy']和z['enjopy'] 内存地址不同,是两个不同对象 51 (49135752L, 50109128L)
clear() 删除字典内所有元素
clear是清除字典中的元素,不是把这个字典删除,
删除字典需要用del
清空字典也可用e={}
1 >>> help(dict.clear) 2 Help on method_descriptor: 3 4 clear(...) 5 D.clear() -> None. Remove all items from D. #删除字典中的所有元素 6 7 >>> z 8 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 9 >>> z.clear() #清除字典z中的元素 10 >>> z #字典中的元素为空,字典存在,没有删除字典 11 {} 12 >>> del z #删除字典可用del 13 >>> e 14 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 15 >>> e ={} #清空字典中的元素可以使用e={} 16 >>> e 17 {} 18 >>>
get() 返回指定键的值,如果值不在字典中返回default值
1 >>> help(dict.get) 2 Help on method_descriptor: 3 4 get(...) 5 D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. 如果k存在于d中则返回key所对应的值,否则默认返回None 6 7 >>> d = {"enjoy":["python","tea"],"name":"zhangsan"} 8 >>> d 9 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 10 >>> d.get("name") #返回指定键name,所对应的值 11 'zhangsan' 12 >>> d.get("enjoy") #返回指定键enjoy,所对应的值 13 ['python', 'tea'] 14 >>> d["name"] #这种方式也可以获取,与d.get()的区别,就是如果字典中没有key值,将会报错keyError 如下示例 15 'zhangsan' 16 >>> d.get("teacher") #如果d.get("teacher")不存在则返回默认值none 17 >>> d.get("teacher","laoshi") #如果d.get("teacher")不存在,则返回后面的值 18 'laoshi' 19 >>> d["teacher"] 20 Traceback (most recent call last): 21 File "<stdin>", line 1, in <module> 22 KeyError: 'teacher' 23 >>>
setdefault() 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
1 >>> help(dict.setdefault) 2 Help on method_descriptor: 3 4 setdefault(...) 5 D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D 6 7 >>> d 8 {'enjoy': ['python', 'tea'], 'name': 'zhangsan'} 9 >>> d.setdefault("name") #取出d中key为name的值 10 'zhangsan' 11 >>> d.setdefault("city","beijing") #city 不存在与字典中,则将city添加与字典中,city为key,beijing为value 12 'beijing' 13 >>> d 14 {'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan'} 15 >>> d.setdefault("teacher") #teacher 不存在于字典中,则将teacher 作为key,value为none加入字典中 16 >>> d 17 {'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 18 >>>
items() 以列表返回可遍历的(键, 值) 元组数组
iteritems() 与items()方法类似,返回的是一个迭代器
1 >>> help(dict.items) 2 Help on method_descriptor: 3 4 items(...) 5 D.items() -> list of D's (key, value) pairs, as 2-tuples #通过字典items方法得到的是含有字典key value元组为元素的列表 6 7 >>> d 8 {'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 9 >>> d.items() #得到key、value元组为元素的列表 10 [('enjoy', ['python', 'tea']), ('city', 'beijing'), ('name', 'zhangsan'), ('teacher', None)] 11 >>> help(dict.iteritems) 12 Help on method_descriptor: 13 14 iteritems(...) 15 D.iteritems() -> an iterator over the (key, value) items of D 16 17 >>> d_iter=d.iteritems() 18 >>> type(d_iter) 19 <type 'dictionary-itemiterator'> 20 >>> d_iter 21 <dictionary-itemiterator object at 0x00000000013EDD68> 22 >>> list(d_iter) 23 [('enjoy', ['python', 'tea']), ('city', 'beijing'), ('name', 'zhangsan'), ('teacher', None)] 24 >>>
keys() 以列表返回一个字典所有的键
iterkeys()
1 >>> help(dict.keys) 2 Help on method_descriptor: 3 4 keys(...) 5 D.keys() -> list of D's keys #用这个方法,得到一个列表,这个列表是以字典key为元素来组成的 6 7 >>> d 8 {'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 9 >>> d.keys() #得到字典中所有的key 10 ['enjoy', 'city', 'name', 'teacher'] 11 >>> d.iterkeys() #迭代器 12 <dictionary-keyiterator object at 0x00000000013EDE58> 13 >>>
values() 以列表返回字典中的所有值
itervalues()
1 >>> d.values() #得到字典value的列表 2 [['python', 'tea'], 'beijing', 'zhangsan', None] 3 >>> d.itervalues() #迭代器 4 <dictionary-valueiterator object at 0x00000000013EDE58> 5 >>>
pop() 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
1 >>> help(dict.pop) 2 Help on method_descriptor: 3 #参数至少有一个key,相应着会返回一个字典中key所对应的value.
#如果字典中没有key,就返回第二个参数d的值,但如果d的值不写,就会报错 4 pop(...) 5 D.pop(k[,d]) -> v, remove specified key and return the corresponding value. 6 If key is not found, d is returned if given, otherwise KeyError is raised 7 8 >>> d 9 {'enjoy': ['python', 'tea'], 'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 10 >>> d.pop("enjoy")#删除enjoy键值对,返回的是enjoy对应的value值 11 ['python', 'tea'] 12 >>> d 13 {'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 14 >>> d.pop("enjoy","python") #在字典d中已经没有enjoy这个键值对,返回第二个参数python 15 'python' 16 >>>
popitem() 随机返回并删除字典中的一对键和值。
1 >>> help(dict.popitem) 2 Help on method_descriptor: 3 4 popitem(...) 5 D.popitem() -> (k, v), remove and return some (key, value) pair as a 6 2-tuple; but raise KeyError if D is empty. 7 8 >>> d 9 {'city': 'beijing', 'name': 'zhangsan', 'teacher': None} 10 >>> d.popitem() #返回删除的键值对,每次只能删除一个,且是随机删除一个键值对,如果已经没有键值对了,再去删除就会报错 11 ('city', 'beijing') 12 >>> d.popitem() 13 ('name', 'zhangsan') 14 >>> d.popitem() 15 ('teacher', None) 16 >>> d.popitem() 17 Traceback (most recent call last): 18 File "<stdin>", line 1, in <module> 19 KeyError: 'popitem(): dictionary is empty' 20 >>>
update () 把字典dict2的键/值对更新到dict里
1.返回值是none
2.以字典或可迭代对象为参数
3.如果参数有keys方法,就会循环E中的k,实现D[k]=E[kj]
1 >>> help(dict.update) 2 Help on method_descriptor: 3 4 update(...) 5 D.update([E, ]**F) -> None. Update D from dict/iterable E and F. 6 If E present and has a .keys() method, does: for k in E: D[k] = E[k] 7 If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v 8 In either case, this is followed by: for k in F: D[k] = F[k] 9 10 >>> d1={"lang":"python"} 11 >>> d2={"name":"zhangsan"} 12 >>> d1.update(d2) 13 >>> d1 14 {'lang': 'python', 'name': 'zhangsan'} 15 >>> d2 16 {'name': 'zhangsan'} 17 >>> d2.update([("city","beijing"),("web","java"),("site","baidu.com")]) 18 >>> d2 19 {'site': 'baidu.com', 'city': 'beijing', 'name': 'zhangsan', 'web': 'java'} 20 >>>
has_key() 如果键在字典dict里返回true,否则返回false
1 >>> help(dict.has_key) 2 Help on method_descriptor: 3 4 has_key(...) 5 D.has_key(k) -> True if D has a key k, else False 6 7 >>> d2.has_key("city") #判断key是否存在 8 True 9 >>> "city" in d2 10 True 11 >>>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python中常用模块详解一
下一篇:Flask 模板(一)
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash