跟老齐学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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
深入了解Python数据类型之列表
Jun 24 Python
Python中super()函数简介及用法分享
Jul 11 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
python中复数的共轭复数知识点总结
Dec 06 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
实例讲解Python中sys.argv[]的用法
Jun 03 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 Python
python缺失值填充方法示例代码
Dec 24 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获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP实现小偷程序实例
2016/10/31 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
PHP 8新特性简介
2020/08/18 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
jQuery实现frame之间互通的方法
2017/06/26 jQuery
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
用Python编写web API的教程
2015/04/30 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
python爬取哈尔滨天气信息
2018/07/14 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
护士求职自荐信范文
2014/03/19 职场文书
贷款担保书范文
2014/05/13 职场文书
新农村建设标语
2014/06/24 职场文书
小学清明节活动总结
2014/07/04 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
师德承诺书2015
2015/04/28 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle