python 字典详解
1.字典的定义
- 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组)
- 字典包含下标(keys)集合和值(vaule)集合,且keys是唯一的
2.字典的创建
实例如下:
d1={'name':'alex','age':18,1:''}
d2={}
d2['name']='john'
d2['age']=15
d3=dict(name='lili',age=12)
d4=dict(zip(('name','age'),('tom',20)))
print "d1=",d1
print "d2=",d2
print "d3=",d3
print "d5=",d4
输入如下
d1= {1: '', 'age': 18, 'name': 'alex'}
d2= {'age': 15, 'name': 'john'}
d3= {'age': 12, 'name': 'lili'}
d4= {'age': 20, 'name': 'tom'}
3.字典的特性
- 无序性
字典最终显示的值是不会按照插入的先后顺序所决定的。因为字典的本质是hash table,而Hash的本质是, 将一数列作为Key尽量平均分配另一个数列Value到程序已经申请好的Array上。
- 键值唯一性
字典中的键值是唯一(重复的只会保存一个)
4.字典的基本操作
- 修改字典
1 #coding=utf-8
2 d1 = {'name':'alex'}
3 print '字典修改前:', d1
4 d1['name']='Bod'
5 print '字典修改后:' ,d1
实例输出结果:
字典修改前: {'name': 'alex'}
字典修改后: {'name': 'Bod'}
- 字典访问
#coding=utf-8
d1 = {'name':'alex','age':18}
print 'd1["name"]:',d1["name"]
print 'd1["age"]:',d1["age"]
实例输出结果:
d1["name"]: alex
d1["age"]: 18
键值不存在的情况无法通过该方法获取值,会抛出异常

- 字典删除
#coding=utf-8 #删除某个键
d1 = {'name':'alex','age':18}
print '删除前字典内容:',d1
del d1['name']
print '删除后字典内容:',d1 #清空字典
d2={'name':'alex','age':18}
print '清空前字典内容:',d2
d2.clear()
print '清空后字典内容:',d2 #删除字典
d3={'name':'alex','age':18}
print '删除前字典内容:',d3
del d3
#捕获异常
try:
print '删除后字典内容:',d3
except NameError:
print 'd3不存在'
实例输出结果:
删除前字典内容: {'age': 18, 'name': 'alex'}
删除后字典内容: {'age': 18}
清空前字典内容: {'age': 18, 'name': 'alex'}
清空后字典内容: {}
删除前字典内容: {'age': 18, 'name': 'alex'}
删除后字典内容: d3不存在
删除字典指定键值时,需要确保键值存在,否则会抛出异常

5.字典的内置函数
| 函数名称 | 函数作用 | 函数结果 |
| cmp({"name":"alex"},{"name":"Bob"}) | 比较两个字典是否相同 | 完全相同返回0 |
| len({"name":"alex"}) | 计算字典键的个数 | 1 |
| str({"name":"alex"}) | 将字典转为字符串 | "{'name': 'alex'}" |
| type({"name":"alex"}) | 输出类型 | dict |
| dict1.clear() | 删除字典所有键值 | |
| dict1.copy() | 复制字典 | |
| dict.fromkeys(seq,vaule) | 创建字典,以seq为key,value为值 | |
| dict1.get(key) | 根据key获取vaule,如果可以存在,则获取值,不存在,则返回None | |
| dict1.has_key(key) | 判断key是否存在,存在返回True,不存在Flase | |
| dict1.items() | 以列表返回可遍历的(键, 值) 元组数组 | |
| dict1.keys() | 以列表返回所有key | |
| dict1.setdefault() | 和get功能相同 | |
| dict1.values() | 以列表返回字典所有值 | |
| dict1.update(dict2) | 将dict2添加到dict1中 | |
| dict1.iteritems() | 返回一个迭代器 | |
| dict1.pop(key) | 与del功能相同 | |
| dict1.popitem() | 删除,并有返回值,字典为空时调用该方法抛出异常 |
python 字典详解的更多相关文章
- Python字典详解
转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...
- Python数据类型详解——字典
Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- Python Collections详解
Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
- 【python】详解事件驱动event实现
[python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- [转] Python Traceback详解
追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a Python Traceback详解 刚接触Python的时候,简单的 ...
随机推荐
- 微信小程序icon,text,progress标签的测试
一:testIconAndTextAndProgress.wxml的代码如下.testIconAndTextAndProgress.js自动生成示例代码 //testIconAndTextAndPro ...
- 戴建钊 201521123023《Java程序设计》第2周学习总结
1. 本周学习总结 (1)String类:字符串连接"+",以前觉得方便但不知其原理,所以在有大量修改字符串操作的时候用得不亦乐乎,既浪费内存,又减缓效率.现在知道用Stringb ...
- 《JAVA程序设计》第12周学习总结
1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. InputStream和OutputStream为所有字节流的父类 通过操作流中的字节可处理各种不同类型的数据 ...
- 201521123016《Java程序设计》第14周学习总结
1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) - ...
- Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...
- SAP高可用性(HA)
1.SAP系统高可用的要求 高可用性是从终端用户的角度来需求,及要求最大化系统的可用性.其目的是降低意外系统关闭时间(服务器生效.存储失效.操作系统失败--),减少预期系统关闭时间(系统及架构的维护. ...
- POJ 3625 最小生成树 Prim C++
Building Roads Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11861 Accepted: 3376 D ...
- [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)
1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...
- angular $observe() 和$watch的区别
1.$observe()是属性attributes的方法,只能在DOM属性的值发生变化时用,并且只用于directive内. 当需要监听一个包含变量的属性值时attr1="Name:{{na ...
- 翻译:MariaDB wait/nowait
本文为mariadb官方手册:wait/nowait的译文.原文:https://mariadb.com/kb/en/library/wait-and-nowait/ 从MariaDB 10.3.0开 ...