跟老齐学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中replace方法实例分析
Aug 20 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python3中详解fabfile的编写
Jun 24 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python+os根据文件名自动生成文本
Mar 21 Python
浅谈Python type的使用
Nov 19 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
Python关于OS文件目录处理的实例分享
May 23 Python
python析构函数用法及注意事项
Jun 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
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python Socket使用实例
2017/12/18 Python
python读取文本中的坐标方法
2018/10/14 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
校园报刊亭创业计划书
2014/01/02 职场文书
卖房授权委托书样本
2014/10/05 职场文书
保姆聘用合同
2015/09/21 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python