跟老齐学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 测试实现方法
Dec 24 Python
Python实现方便使用的级联进度信息实例
May 05 Python
Python中统计函数运行耗时的方法
May 05 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
django query模块
Apr 20 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python使用turtle库绘制奥运五环
Feb 24 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python实现无边框进度条的实例代码
Dec 30 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
javascript 获取图片颜色
2009/04/05 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Python多线程和队列操作实例
2015/06/21 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
《观舞记》教学反思
2014/04/16 职场文书
信访工作经验交流材料
2014/05/23 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
公司业务员管理制度
2015/08/05 职场文书
商业计划书范文
2019/04/24 职场文书
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript