跟老齐学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清除字符串里非数字字符的方法
Jul 02 Python
Sublime开发python程序的示例代码
Jan 24 Python
python将回车作为输入内容的实例
Jun 23 Python
python3.7.0的安装步骤
Aug 27 Python
实例介绍Python中整型
Feb 11 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
python实现串口通信的示例代码
Feb 10 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 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中使用imagick实现把PDF转成图片
2015/01/26 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python调用外部程序的实操步骤
2019/03/04 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
银行存款证明样本
2014/01/17 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
植树节新闻稿
2015/07/17 职场文书
七一表彰大会简报
2015/07/20 职场文书
远程教育培训心得体会
2016/01/09 职场文书
z-index不起作用
2021/03/31 HTML / CSS
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
Redis keys命令的具体使用
2022/06/05 Redis