字典原来是这么回事儿

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

认识字典

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

 phonebook={'zhangsan':'','lisi':''}
print phonebook

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

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

 item=[('name','BaiYiShaoNian'),('age','')]
d=dict(item)
print d

基本操作

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

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

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

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

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

 d={'name':'BaiYiShaoNian','age':'','from':'ChongQing','nowAdd':'Jilin'}
print len(d)
print d['name']
d['name']='huangSir'
print d
del d['age']
print d
print 'from' in d
print 'age' in d

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

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

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

字典方法

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

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

deepcopy:深复制

 d={'zhangsan':['',''],'lisi':''}
d2=d.copy()
d['zhangsan'].append('')
print d
print d2 from copy import deepcopy
d={'zhangsan':['',''],'lisi':''}
d3=deepcopy(d)
d['zhangsan'].append('')
print d
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。

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

  1. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  2. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  3. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  4. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  5. [python学习手册-笔记]002.python核心数据类型

    python核心数据类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...

  6. Python学习(二)Python 简介

    Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...

  7. Python 学习之二:Python超短教程

    前言 本教程综合Stanford CS231N和UC Berkerley CS188的Python教程. 教程非常短,但适合有一定编程基础.学过其它语言的童鞋. Python 启动Python 解释器 ...

  8. python学习之路-1 python简介及安装方法

    python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...

  9. Python学习【02】Python基础

    一.Python内部执行过程 1.Python的后缀名可以是任意? print("hello,world")  保存成  .py / .txt / .sb / .aaa 都可以用在 ...

随机推荐

  1. Java学习之路(3)

    JKD的安装和配置: 一.适合超级菜鸟的,不用设置系统路径,不用到处找插件 (1)如果你的系统是windows或linux,根据系统的不同(32位和64位之分),先到www.baidu.com搜索jd ...

  2. Using adb over wifi

    Step1 : phone & pc connect the same wifi. Step2 : phone use usb cable to connect pc. Step 3 : $ ...

  3. mysql中文乱码的解决方法

    MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation).对于字符集的支持细化到四个层次: 服务器(ser ...

  4. (10)centos搭建web服务器 (Nginx+ django)

    安装 python3 sudo yum install python34 安装uWSGI pip install uwsgi 安装 Nginx http://nginx.org/en/download ...

  5. 线程和进程(Java)

    一.线程概述 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程 ...

  6. 解决unknown import path "golang.org/x/sys/unix": unrecognized import path "golang.org/x/sys"

    问题描述 当我们使用 go get.go install.go mod 等命令时,会自动下载相应的包或依赖包.但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况. ...

  7. EasyMvc入门教程-基本控件说明(10)图片轮播导航

    图片轮播导航大家一定很常见,尤其是中小型建站系统的必备神器..:) 先上图上例子,看效果如下: 实现代码如下: @{ var data = new List<PhotoPlayerItem> ...

  8. ylb: SQL表的高级查询-子查询

    ylbtech-SQL Server: SQL Server- SQL表的高级查询-子查询 SQL Server 表的高级查询-子查询. 1,ylb:表的高级查询-子查询返回顶部 --======== ...

  9. Spring boot Security Disable security

    When I use security.basic.enabled=false to disable security on a Spring Boot project that has the fo ...

  10. 1毛钱的CDN你家的站点会用吗?

    在第七届中国云计算大会上,作为CDN领域最具重量级的受邀发言人.迅雷CTO.网心科技CEO陈磊在发表重要演讲时,宣布迅雷将推出国内首家无限节点CDN.而这一款CDN号称眼下国内最廉价的CDN,售价仅为 ...