整理Python最基本的操作字典的方法


Posted in Python onApril 24, 2015

Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典.
1.1 创建字典

Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建 函数dict

>>> info = {}
>>> info = dict()

1.2 初始化字典

Python可以在创建字典的时候初始化字典

>>> info = {"name" : 'cold'}
>>> info = dict(name = 'cold')    # 更优雅

很明显第二种方法更加的优雅和减少一些特殊字符的输入,但是有种情况第二种不能胜任

>>> key = 'name'
>>> info = { key :'cold'} # {'name':'cold'}
>>> info = dict(key = 'cold') # {'key': 'cold'}

明显第二种方法就会引发一个不容易找到的bug

Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为键并用None或fromkeys方法的第二个参数初始化

>>> info = {}.fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'linuxzen.com'}

1.3 优雅的获取键值

字典可以这样获取到键的值

>>> info = {'name':'cold', 'blog':'linuxzen.com'}
>>> info['name']
'cold'

但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典

>>> info = dict(name= 'cold', blog='www.linuxzen.com')
>>> info.get('name')
'cold'
>>> info.get('blogname')
None
>>> info.get('blogname', 'linuxzen')
'linuxzen'

我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅
1.4 更新/添加

Python 字典可以使用键作为索引来访问/更新/添加值

>>> info = dict()
>>> info['name'] = 'cold'
>>> info['blog'] = 'linuxzen.com'
>>> info
{'blog': 'linuxzen.com', 'name': 'cold'}
>>> info
{'blog': 'linuxzen.com', 'name': 'cold night'}

同时Python字典的update方法也可以更新和添加字典

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.update({'name':'cold night', 'blogname':'linuxzen'})
>>> info
{'blog': 'linuxzen.com', 'name': 'cold night', 'blogname': 'linuxzen'}
>>> info.update(name='cold', blog='www.linuxzen.com') # 更优雅
>>> info
{'blog': 'www.linuxzen.com', 'name': 'cold', 'blogname': 'linuxzen'}

Python字典的update方法可以使用一个字典来更新字典,也可以使用参数传递类似dict函数一样的方式更新一个字典,上面代码中哦功能的第二个更加优雅,但是同样和dict函数类似,键是变量时也只取字面值
1.5 字典删除

可以调用Python内置关键字del来删除一个键值

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'cold'}
>>> del info['name']
>>> info
{'blog': 'linuxzen.com'}

同时也可以使用字典的pop方法来取出一个键值,并删除

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.pop('name')
'cold'
>>> info
{'blog': 'linuxzen.com'}

1.6 其他操作

获取所有key

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.keys()
['blog', 'name']

获取key,value并循环

>>> info = dict(name='cold', blog='linuxzen.com')
>>> for key, value in info.items():
...   print key, ':', value
... 
blog : linuxzen.com
name : cold
Python 相关文章推荐
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
python递归函数绘制分形树的方法
Jun 22 Python
python使用正则筛选信用卡
Jan 27 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
Python requests上传文件实现步骤
Sep 15 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
编写Python脚本使得web页面上的代码高亮显示
Apr 24 #Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 #Python
Python3.x中自定义比较函数
Apr 24 #Python
使用Python脚本将绝对url替换为相对url的教程
Apr 24 #Python
Python3.x版本中新的字符串格式化方法
Apr 24 #Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 #Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 #Python
You might like
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
JavaScript 注册事件代码
2011/01/27 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
js实现拖拽功能
2017/03/01 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Python线性方程组求解运算示例
2018/01/17 Python
python3实现windows下同名进程监控
2018/06/21 Python
Python IDLE清空窗口的实例
2018/06/25 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Django实现网页分页功能
2019/10/31 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
python os.listdir()乱码解决方案
2021/01/31 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
C++是不是类型安全的
2014/02/18 面试题
两年的个人工作自我评价
2014/01/10 职场文书
给儿子的表扬信
2014/01/15 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
校庆团日活动总结
2014/08/28 职场文书
博士生专家推荐信
2015/03/25 职场文书
房地产项目合作意向书
2015/05/08 职场文书
常住证明范本
2015/06/23 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
Django框架中表单的用法
2022/06/10 Python