跟老齐学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实现socket端口重定向示例
Feb 10 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python实现约瑟夫环问题的方法
May 03 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
浅谈pytorch中的dropout的概率p
May 27 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python实现发送email的几种常用方法
2014/08/18 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python3.x中自定义比较函数
2015/04/24 Python
python3抓取中文网页的方法
2015/07/28 Python
Python实现KNN邻近算法
2021/01/28 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
普通PHP程序员笔试题
2016/01/01 面试题
先进个人获奖感言
2014/01/24 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
服务员岗位职责
2015/02/03 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
golang中的struct操作
2021/11/11 Golang