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支持断点续传的多线程下载示例
Jan 16 Python
从零学Python之入门(二)基本数据类型
May 25 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
详解python的webrtc库实现语音端点检测
May 31 Python
利用python求相邻数的方法示例
Aug 18 Python
Python统计单词出现的次数
Apr 04 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
python 获取剪切板内容的两种方法
Nov 28 Python
python多次执行绘制条形图
Apr 20 Python
python+opencv实现目标跟踪过程
Jun 21 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
如何使用Python脚本实现文件拷贝
2019/11/20 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python的dict判断key是否存在的方法
2020/12/09 Python
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
ORACLE十问
2015/04/20 面试题
工厂保洁员岗位职责
2013/12/04 职场文书
30年同学聚会感言
2014/01/30 职场文书
教师产假请假条范文
2014/04/10 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle