Python学习总结之四 -- 这就是Python的字典

字典原来是这么回事儿

Python学习到现在,我们已经知道,如果想将值分组到结构中,并且通过编号对其进行引用,列表就可以派上用场。不过,今天,我们将学到一种通过名字引用值的数据结构,应该知道这种数据类型叫做映射。字典则是Python中唯一内建的映射类型,那么我们就来学习字典。

认识字典

字典是可变的,并且可以存储任意数量的Python对象。下面这个例子就是简单的字典类型:

1 phonebook={‘zhangsan‘:‘12345‘,‘lisi‘:‘54321‘}
2 print phonebook

字典由多个键及与其对应的值构成的对组成(我们也把键/值对称为项)。字典中包括很多键,每一个键对应一个值。键在字典中是唯一的,但是值不是唯一的。在上例中,名字是键,电话号码是值。每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开,而整个字典用大括号括起来。空字典(不包含任何项)由两个大括号组成,像这样:{}。

dict函数:我们可以调用dict函数对其他映射(比如其他字典)或者(键,值)这样的序列或者关键字参数来创建字典。

1 item=[(‘name‘,‘BaiYiShaoNian‘),(‘age‘,‘23‘)]
2 d=dict(item)
3 print d

基本操作

len(d) : 返回字典d中项(键-值对)的数量

d[k] : 返回字典d中键k对应的值

d[k]=v :将值v关联到字典d的键k上

del d[k] :删除键k的项

k in d : 检查键k是否存在于字典d中

1 d={‘name‘:‘BaiYiShaoNian‘,‘age‘:‘23‘,‘from‘:‘ChongQing‘,‘nowAdd‘:‘Jilin‘}
2 print len(d)
3 print d[‘name‘]
4 d[‘name‘]=‘huangSir‘
5 print d
6 del d[‘age‘]
7 print d
8 print ‘from‘ in d
9 print ‘age‘ in d 

小结:在字典中检查键的成员资格比在列表中检查值的成员资格更加高效,数据规模越大,两者的查询效率差别就越大。

字典格式化字符串:我在字符串一篇中有讲到字符串的格式化方法,这里,又出现字典格式化字符串了。想想有什么相同之处和不同之处呢,你是不是应该试着思考一下?(提示:字典是以映射的方式存在的)

1 d={‘name‘:‘BaiYiShaoNian‘,‘age‘:‘23‘,‘from‘:‘ChongQing‘}
2 print ‘introduce yourself‘
3 print ‘My name is %(name)s , I\‘m %(age)s years old , I\‘m from %(from)s .‘ % d 

字典方法

clear:清除字典中所有的项,无返回值。(通过下面两个例子感受clear方法的特点在哪里)

copy:返回一个具有相同键-值对的新字典(浅复制)

deepcopy:深复制

 1 d={‘zhangsan‘:[‘789‘,‘123‘],‘lisi‘:‘12313‘}
 2 d2=d.copy()
 3 d[‘zhangsan‘].append(‘999‘)
 4 print d
 5 print d2
 6
 7 from copy import deepcopy
 8 d={‘zhangsan‘:[‘789‘,‘123‘],‘lisi‘:‘12313‘}
 9 d3=deepcopy(d)
10 d[‘zhangsan‘].append(‘999‘)
11 print d
12 print d3

fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None。

get:一个更宽松的访问字典的方法。

一般来说,如果正常访问字典中不存在的键的话会出错,那么使用get方法就不会报错,它返回的是None。

has_key:检查字典中是否含有给出的键。表达式d.has_key(k)相当于k in d。

itemsiteritems:items将字典项以列表的形式返回,iteritems和items作用相同,但是它返回的是一个迭代器对象而不是列表。

keysiterkeys:keys方法将字典中的键以列表形式返回,iterkeys方法将字典中的值以列表返回

pop:获得对应于给定键的值,并将这个键-值对从字典中移除

valuesitervalues:和keys、iterkeys相对应,values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)

总结:目前为止,我们已经学习到了Python中字符串、元组、列表、字典的基本知识了,接下来应该怎么学呢?if 和 while语句吗?我觉得这些循环语句可以在今后的Python例子中自然的就学到了。所以,接下来,我决定继续学习Python的高级编程和爬虫的知识了。

加油!BaiYiShaoNian。

时间: 2024-10-18 23:59:08

Python学习总结之四 -- 这就是Python的字典的相关文章

python学习笔记(五)之字典2

python学习笔记(五)之字典2编程实战中经常用到实例1:copy >> ad = {"name":"wtf","hig":"180"}>> bd = ad>> bd{'name': 'wtf', 'hig': '180'}>> id (ad)4539954352>> id (bd)4539954352说明:一个对象贴上两个标签,使用赋值,实现了所谓的"假

python学习手册——1介绍python对象类型

在python ,数据以对象的形式出现--无论是python提供的内置对象,还是使用python或是像C扩展库这样的扩展语言工具创建的对象.尽管在以后才能确定这一概念,但对象无非是内在中的一部分,包含数值和相关操作的集合. 由于对象是python 最基本的概念,从这一章开始我们将会全面地体验python的内置对象类型. python程序可以分解成模块,语句,表达式以及对象,如下所示: 1.程序由模块构成 2.模块包含语句 3.语句包含表达式 4.表达式建立并处理对象 为什么使用内置类型 1.内置

Python学习教程(Python学习路线):python—收集系统信息

Python学习教程(Python学习路线):python—收集系统信息  1.1 hashlib模块使用 获取文件的MD5值,和shell下的MD5sum一样 方法一:先实例化一个对象,再使用update做校验,最后十六进制查看hexdigest In [3]: import hashlib In [5]: md5 = hashlib.md5 In [6]: md5.update("a") In [7]: md5.hexdigest Out[7]: '0cc175b9c0f1b6a8

Python学习教程(Python学习路线+Python学习视频):Python数据结构

Python学习教程(Python学习路线+Python学习视频):Python数据结构   数据结构引言:   数据结构是组织数据的方式,以便能够更好的存储和获取数据.数据结构定义数据之间的关系和对这些数据的操作方式.数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方式. 在这篇文章中,你将了解到多种数据结构以及这些数据结构在Python中实现的方式.    抽象数据类型和数据结构 数据结构是抽象数据类型(ADT)的实现,通常,是通过编程语言提供的

python学习笔记5:python读写文件

python学习笔记5:python读写文件 一.文件的打开模式 1.打开文件 1) f=open('D:\\a.txt','w') 第一个参数是文件的路径,如果只写文件的名字,默认是在当前执行目录下的文件:第二个参数是文件的打开模式 这种方式打开文件,在使用完了之后一定要记得,关闭文件: f.close() 2) with open('D:\\a.txt','w') as f 这种方式打开文件,文件在使用完后会自动关闭文件,不需要close  2. 文件的打开模式 总的来说,文件的打开模式有三

python学习笔记1——安装python

python学习笔记1--安装python centos和ubuntu的python2.7的安装方法参考:http://daixuan.blog.51cto.com/5426657/1767325 1.查看当前python版本并且 [[email protected] ~]# python -V Python 2.6.6 2.安装eple-release扩展源 [[email protected] ~]# yum install -y epel-release 3.安装pip [[email p

python学习笔记(01):python和c语言 标识符命名规则比较

python标识符命名规则:标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’).标识符名称的其他部分可以由字母(大写或小写).下划线(‘ _ ’)或数字(0-9)组成.标识符名称是对大小写敏感的.例如,myname和myName不是一个标识符.注意前者中的小写n和后者中的大写N.有效 标识符名称的例子有i.__my_name.name_23和a1b2_c3.无效 标识符名称的例子有2things.this is spaced out和my-name. c语言标识符命

[python]学习Django中的python知识拾遗

1.使用正则表达式进行URL匹配 urlpatterns = patterns('', # ... (r'^time/plus/\d+/$', hours_ahead), # ... ) (1)使用r代表字符串是原始字符串,表示python不会对立面的反斜杠\转义符进行处理,使用正则表达式一般使用原始字符串. (2)使用\d+表示匹配1个或者多个数字,如果限定只能使用两个数字,则\d{1,2}. (3)如果要把正则表达式的某个数作为参数,则用小括号包起来,如(r'^time/plus/(\d{1

Python学习教程(Python学习路线):Python面试100题(二)

Python学习教程(Python学习路线):面试题接着给大家整理! 16.<div class="nam">中国</div>,用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的 17.python中断言方法举例 assert()方法,断言成功,则程序继续执行,断言失败,则程序报错 18.数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句 select distinct