跟老齐学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 re模块介绍
Nov 30 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Python基础学习之函数方法实例详解
Jun 18 Python
pandas取出重复数据的方法
Jul 04 Python
python导入库的具体方法
Jun 18 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
php异常处理捕获错误整理
2019/09/23 PHP
js资料prototype 属性
2007/03/13 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
js实现拖拽元素选择和删除
2020/08/25 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
详解django中自定义标签和过滤器
2017/07/03 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
年会搞笑主持词串词
2014/03/24 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
优秀党员事迹材料
2014/12/18 职场文书
中秋节晚会开场白
2015/05/29 职场文书
旅行社计调工作总结
2015/08/12 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
MySQL空间数据存储及函数
2021/09/25 MySQL
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android