python中的字典详细介绍


Posted in Python onSeptember 18, 2014

一、什么是字典?

字典是Python语言中唯一的映射类型。

映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。

字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

字典类型与序列类型的区别:

1.存取和访问数据的方式不同。
2.序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3.映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直4.接或间接地和存储数据值相关联。
5.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
6.映射类型用键直接“映射”到值。

字典是Python中最强大的数据类型之一。

二、如何创建字典和给字典赋值

简单地说字典就是用大括号包裹的键值对的集合。(键值对也被称作项)
一般形式:

adict = {}

adict = {key1:value2, key2:value2, …}

或用dict()函数,如,adict = dict() 或 adict = dict((['x',1],['y',2]))这样写对吗?adict = dict(['x',1],['y',2])。关键字参数创建字典,如:adict= dict(name='allen',age='40′)
或用fromkeys()方法,如,adict = {}.fromkeys((‘x','y'), -1) 这样创建的字典的value是一样的,若不给值,默认为None。

特点:
1、键与值用冒号“:”分开;
2、项与项用逗号“,”分开;
3、字典中的键必须是唯一的,而值可以不唯一。

adict = {‘name':'allen', ‘name':'lucy', ‘age':'40′} 与 bdict = {‘name':'allen', ‘name2′:'allen', ‘age':'40′}

注意:如果字典中的值为数字,最好使用字符串数字形式,如:'age':'040′ 而不用 ‘age':040

三、字典的基本操作

1、如何访问字典中的值?
adict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError。

2、如何检查key是否在字典中?

a、has_key()方法 形如:adict.haskey(‘name') 有?>True,无?>False
b、in 、not in   形如:'name' in adict      有?>True,无?>False

3、如何更新字典?

a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值

四、映射类型操作符

标准类型操作符(+,-,*,<,>,<=,>=,==,!=,and,or, not)

a、字典不支持拼接和重复操作符(+,*)
b、字典的比较操作
先比较字典的长度也就是字典的元素个数
键比较
值比较
例子:

adict = {}

bdict = {‘name':'allen', ‘age':'40′}

cmp(adict, bdict)  < ?>-1 or > ?>1 or ==  ?>0

五、映射相关的函数

1、len() 返回字典的长度
2、hash() 返回对象的哈希值,可以用来判断一个对象能否用来作为字典的键
3、dict() 工厂函数,用来创建字典

六、字典的方法

1、adict.keys() 返回一个包含字典所有KEY的列表;
2、adict.values() 返回一个包含字典所有value的列表;
3、adict.items() 返回一个包含所有(键,值)元祖的列表;
4、adict.clear() 删除字典中的所有项或元素;
5、adict.copy() 返回一个字典浅拷贝的副本;
6、adict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
7、adict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);
8、adict.has_key(key) 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in;
9、adict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
10、adict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
11、adict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;
12、adict.update(bdict) 将字典bdict的键值对添加到字典adict中。

七、字典的遍历

1、遍历字典的key(键)

for key in adict.keys():print key

2、遍历字典的value(值)
for value in adict.values(): print value

3、遍历字典的项(元素)
for item in adict.items():print item

4、遍历字典的key-value
for item,value in adict.items(): print ‘key=%s, value=%s' %(item, value)  或   for item,value in adict.iteritems(): print ‘key=%s, value=%s' %(item, value)

注意:for item,value in adict.items(): print ‘key=%s', ‘value=%s', %(item, value) 这种写法是错误的

八、使用字典的注意事项

1、不能允许一键对应多个值;
2、键必须是可哈希的。

Python 相关文章推荐
在Python中操作字典之fromkeys()方法的使用
May 21 Python
深入理解python中的闭包和装饰器
Jun 12 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
Python3 replace()函数使用方法
Mar 19 Python
python按照多个条件排序的方法
Feb 08 Python
对Python _取log的几种方式小结
Jul 25 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python实现暗通道去雾算法的示例
Sep 27 Python
彻底解决Python包下载慢问题
Nov 15 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 Python
python中执行shell命令的几个方法小结
Sep 18 #Python
python处理PHP数组文本文件实例
Sep 18 #Python
Python threading多线程编程实例
Sep 18 #Python
Python中捕捉详细异常信息的代码示例
Sep 18 #Python
python字符串连接的N种方式总结
Sep 17 #Python
Python实现的检测web服务器健康状况的小程序
Sep 17 #Python
python写的一个squid访问日志分析的小程序
Sep 17 #Python
You might like
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
JavaScript运行时库属性一览表
2014/03/14 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python xml解析实例详解
2016/11/14 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Python解析微信dat文件的方法
2020/11/30 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
什么是规则表达式
2012/05/03 面试题
4s客服专员岗位职责
2013/12/01 职场文书
七年级英语教学反思
2014/01/15 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
工作说明书范文
2014/05/07 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书