跟老齐学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 cookielib 登录人人网的实现代码
Dec 19 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
python中update的基本使用方法详解
Jul 17 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
Python实战之OpenCV实现猫脸检测
Jun 26 Python
Python学习之时间包使用教程详解
Mar 21 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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
PHP微框架Dispatch简介
2014/06/12 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Scrapy的简单使用教程
2017/10/24 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
原生python实现knn分类算法
2019/10/24 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
redis复制有可能碰到的问题汇总
2022/04/03 Redis
Vue操作Storage本地化存储
2022/04/29 Vue.js