跟老齐学Python之dict()的操作方法


Posted in Python onSeptember 24, 2014

dict的很多方法跟list有类似的地方,下面一一道来,并且会跟list做一个对比

嵌套

嵌套在list中也存在,就是元素是list,在dict中,也有类似的样式:

>>> a_list = [[1,2,3],[4,5],[6,7]]
>>> a_list[1][1]
5
>>> a_dict = {1:{"name":"qiwsir"},2:"python","email":"qiwsir@gmail.com"}
>>> a_dict
{1: {'name': 'qiwsir'}, 2: 'python', 'email': 'qiwsir@gmail.com'}
>>> a_dict[1]['name']  #一个嵌套的dict访问其值的方法:一层一层地写出键
'qiwsir'

获取键、值

在上一讲中,已经知道可以通过dict的键得到其值。例上面的例子。

还有别的方法得到键值吗?有!python一般不是只有一个方法实现某个操作的。

>>> website = {1:"google","second":"baidu",3:"facebook","twitter":4}

>>>#用d.keys()的方法得到dict的所有键,结果是list
>>> website.keys()
[1, 'second', 3, 'twitter']

>>>#用d.values()的方法得到dict的所有值,如果里面没有嵌套别的dict,结果是list
>>> website.values()
['google', 'baidu', 'facebook', 4]

>>>#用items()的方法得到了一组一组的键值对,
>>>#结果是list,只不过list里面的元素是元组
>>> website.items()
[(1, 'google'), ('second', 'baidu'), (3, 'facebook'), ('twitter', 4)]

从上面的结果中,我们就可以看出,还可以用for语句循环得到相应内容。例如:

>>> for key in website.keys():
...   print key,type(key)
... 
1 <type 'int'>
second <type 'str'>
3 <type 'int'>
twitter <type 'str'>

>>>#下面的方法和上面的方法是一样的
>>> for key in website:
...   print key,type(key)
... 
1 <type 'int'>
second <type 'str'>
3 <type 'int'>
twitter <type 'str'>

以下两种方法等效:

>>> for value in website.values():
...   print value
... 
google
baidu
facebook
4

>>> for key in website:
...   print website[key]
... 
google
baidu
facebook
4

下面的方法又是等效的:

>>> for k,v in website.items():
...   print str(k)+":"+str(v)
... 
1:google
second:baidu
3:facebook
twitter:4

>>> for k in website:
...   print str(k)+":"+str(website[k])
... 
1:google
second:baidu
3:facebook
twitter:4

下面的方法也能得到键值,不过似乎要多敲键盘

>>> website
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> website.get(1)   
'google'
>>> website.get("second")
'baidu'

其它几种常用方法

dict中的方法在这里不做过多的介绍,因为前面一节中已经列出来类,看官如果有兴趣可以一一尝试。下面列出几种常用的

>>> len(website)
4
>>> website
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}

>>> new_web = website.copy()  #拷贝一份,这个拷贝也叫做浅拷贝,对应着还有深拷贝。
>>> new_web           #两者区别,可以google一下。
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}

删除键值对的方法有两个,但是两者有一点区别

>>>#d.pop(key),根据key删除相应的键值对,并返回该值
>>> new_web.pop('second')
'baidu'

>>> del new_web[3]   #没有返回值,如果删除键不存在,返回错误
>>> new_web
{1: 'google', 'twitter': 4}
>>> del new_web[9]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 9

用d.update(d2)可以把d2合并到d中。

>>> cnweb
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}
>>> website
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}

>>> website.update(cnweb)  #把cnweb合并到website内
>>> website         #变化了
{'qq': 'first in cn', 1: 'google', 'second': 'baidu', 3: 'facebook', 'python': 'qiwsir.github.io', 'twitter': 4, 'alibaba': 'Business'}
>>> cnweb          #not changed
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}

在本讲最后,要提醒看官,在python3中,dict有不少变化,比如能够进行字典解析,就类似列表解析那样,这可是非常有意思的东西哦。

Python 相关文章推荐
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
python实现淘宝秒杀脚本
Jun 23 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
flask 实现token机制的示例代码
Nov 07 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
基于python实现地址和经纬度转换
May 19 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 Python
Python单链表的简单实现方法
Sep 23 #Python
Python中bisect的用法
Sep 23 #Python
python元组操作实例解析
Sep 23 #Python
Python中实现两个字典(dict)合并的方法
Sep 23 #Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 #Python
Python中的类学习笔记
Sep 23 #Python
Python函数嵌套实例
Sep 23 #Python
You might like
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python模拟百度登录实例详解
2016/01/20 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Python实现把类当做字典来访问
2019/12/16 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
公务员培训自我鉴定
2014/02/01 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
2015双创工作总结
2015/07/24 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书