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 字典详解的更多相关文章

  1. Python字典详解

    转载请注明出处 Python字典(dict)是一个很常用的复合类型,其它常用符合类型有:数组(array).元组(touple)和集合(set).字典是一个key/value的集合,key可以是任意可 ...

  2. Python数据类型详解——字典

    Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...

  3. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  4. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  5. Python Collections详解

    Python Collections详解 collections模块在内置数据结构(list.tuple.dict.set)的基础上,提供了几个额外的数据结构:ChainMap.Counter.deq ...

  6. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  7. 【python】详解事件驱动event实现

    [python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...

  8. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  9. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

随机推荐

  1. 团队作业8——第二次项目冲刺(Beta阶段)--第七天

    会议照片: 燃尽图: 项目进展: 所有项目都已完成 进行app测试即使用情况评估 团队贡献比: 队员 角色 团队贡献比 陈麟凤 PM 17% 张志杰 DEV 18% 黄海鸿 TEST 16% 康建灿 ...

  2. 团队作业八——第二次团队冲刺(Beta版本)第6天

    团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...

  3. 团队作业4——第一次项目冲刺(Alpha版本)1st day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.界面 主界面以及游戏界面大体上完成了 界面内的功能正在写 2.登陆方面 QQ授权还未申请 申请完在登陆界面完成后实现用QQ ...

  4. 201521123053《Java程序设计》第1周学习总结

    1. 本周学习总结 第一次接触Java,让我感到很吃力,有些困难.但我知道接触所有新事物都会困难,慢慢来就好. 下面是我这周的学习总结: one  第一节课 老师上课太快了,而且我没预习,根本跟不上 ...

  5. Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)

    4. 处理冲突 4.1 向远程仓库push时无法提交成功,提示在push前应该先pull 如图所示: 有可能是因为远程仓库的版本与本地仓库的版本不一致,所以应先git pull将远程仓库的内容合并到本 ...

  6. 201521123003《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  7. 复用代码【SSH配置文件】

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  8. Servlet第四篇【request对象常用方法、应用】

    什么是HttpServletRequest HttpServletRequest**对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,**HTTP请求头中的所有信息都封装在这个对象中,开发人 ...

  9. Angular2开发拙见

    本文集中讲讲笔者目前使用ng2来开发项目时对其组件的使用的个人的一些拙劣的经验. 先简单讲讲从ng1到ng2框架下组件的职责与地位: ng1中的一大特色--指令,分为属性型.标签型.css类型和注释型 ...

  10. 51nod 1118 机器人走方格 解题思路:动态规划 & 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题

    51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...