跟老齐学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创建关联数组(字典)的方法
May 04 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
在cmd中查看python的安装路径方法
Jul 03 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python return语句如何实现结果返回调用
Oct 15 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
Python OpenCV之常用滤波器使用详解
Apr 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php获取url参数方法总结
2014/11/13 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Django中的ajax请求
2018/10/19 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
大学生预备党员自我评价分享
2013/11/16 职场文书
美容院考勤制度
2014/01/30 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Golang的继承模拟实例
2021/06/30 Golang
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android
利用Java连接Hadoop进行编程
2022/06/28 Java/Android
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers