跟老齐学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正则表达式模块(Regular Expression)
Jul 16 Python
Python深入学习之对象的属性
Aug 31 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
python实现将汉字保存成文本的方法
Nov 16 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
python 多维高斯分布数据生成方式
Dec 09 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
win10安装python3.6的常见问题
Jul 01 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python入门之算法学习
Apr 22 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
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python函数返回不定数量的值方法
2019/01/22 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
Python列表list操作相关知识小结
2020/01/29 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
《雾凇》教学反思
2014/02/17 职场文书
英语专业求职信
2014/07/08 职场文书
创先争优活动承诺书
2014/08/30 职场文书
加强作风建设心得体会
2014/10/22 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
庐山导游词
2015/02/03 职场文书
污染环境建议书
2015/09/14 职场文书
导游词之西安骊山
2019/12/20 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
实战Python爬虫爬取酷我音乐
2022/04/11 Python