第三章--第四节:字典
字典和列表一样是一种可变容器,同样也可以存储不同类型的数据,字典的中数据是以键值对的形式存储的(key:value),数据与数据之间用逗号分割。
零、创建字典
- 创建普通字典 所谓的普通字典,就是字典中存储的数据类型一致,这里所谓的数据类型一致,指的是 value 数据类型一致。创建方法如下:
# 创建一个个人信息字典
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊'}
# 创建一个http状态码字典
http_state={200:'成功',500:'服务器错误',404:'找不到页面'}
- 创建空字典 空列表就是不包含任何数据的列表。创建方式如下:
person={}
- 创建混合字典 混合字典就是字典内包含的数据的类型不同(比如包含的数据的类型即包含整型又包含字符串)。创建方式如下:
# 创建一个个人信息字典
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
注意:
- 字典的key是不能变的,且类型必须是符串、数字或元组(在后面我们将会讲到元祖);
- 字典的value是可变的。
一、获取字典元素
获取字典元素的方法有简单的方式和for循环方式,其中for循环方式有三种方法。
- 简单方式 当我们知道字典元素key的情况下,我们可以使用这个方式取出指定的值(value),语法如下:
dict[key]
我们通过一个例子来看具体用法
# 定义一个个人信息字典
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 取出个人信息中的name、address,并打印
print(person['name'])
print(person['address'])
- for循环:简单方式 利用for循环简单的方式可以让我们取出来字典中所有(或部分)的数据。下面我们通过例子来看一下这种方式怎么使用。
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 例子一、取出全部的个人信息
for key in person:
print(person[key])
# 例子二、取出部分数据如果age大于40 就不显示年龄,显示年龄偏大
for key in person:
value=person[key]
if key=='age' and value>40:
print('年龄偏大')
continue
print(value)
# 例子三、以key:value的形式输出,例如:name:张三
for key in person:
print(key,':',person[key])
- for循环:items 方式 上一小节的例子三中我们同时取出了key和value,但是这种方式我们可以看出来不是很方便,所以我们可以使用 items() 方法对例子三进行改造。
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
for key,value in person.items():
print(key,':',value)
我们从上面的代码可以看出,我们通过 items 方法直接取出来key和value,而且取出value时不是通过dic[key]的方式。
注意:利用在利用 items 方法的时候,需要记住的时 for 循环的两个变量key在前,value在后。
二、修改、添加、删除字典元素
- 修改 字典修改的方式和列表类似,只不过列表传入的是小标索引,而字典传入的是key,语法如下:
dict[key]=new_value
我们通过例子来看一下该怎么使用
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 将name 修改欸王欢,性别为女
person['name']='王欢'
person['sex']='女'
- 添加 添加字典元素我们直接使用类似与修改的方式进行操作,语法如下:
dict[new_key]=new_value
我们通过一个例子来看一下,具体怎么使用
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 新增所在公司
person['company']='阿里巴巴'
- 删除 删除字典分为删除字典元素和删除整个字典,下面我们来分别讲一下。
- 删除字典元素
- del 该方法和列表的del删除方法类似,语法如下:
del dict[key]
通过例子来看一下
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
del person['age']
# 打印字典,发现age元素已经被删除
print(person)
- pop pop 方法也和列表的使用方式类似,删除元素并返回被删除的元素,语法如下:
dict.pop(key[,default])
这里的default代表在没有指定的key时候返回的默认内容,下面我们通过例子来看一下。
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 删除name
person.pop('name')
# 定义default再次删除name,这事将返回“没有这个元素了”
person.pop('name','没有这个元素了')
- popitem popitem 方法的作用虽然和pop一样,也是删除元素并返回被删除的元素,但是他是随机删除一个元素,一般情况会删除最后一个元素,语法如下:
dict.popitem()
通过例子来看一下具体怎么使用
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
person.popitem()
- 删除整个字典 删除整个字典的方法有两种:del 和 clear
- del 该方法函数是删除字典,也就是说该函数会彻底删除整个字典,通过例子来看一下
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 删除整个字典
del person
# 打印这个字典,将会报错,因为这个字典已经被彻底删除
print(person)
- clear 该函数的作用是清空字典,但不删除字典。通过例子来看一下。
person={'name':'张三','sex':'男','address':'北京市西城区白纸坊','age':45,'weight':74.34}
# 删除整个字典
person.clear()
# 打印这个字典,将会输出一个空的字典
print(person)
三、字典其他操作
我们再来看一下字典的其他操作
函数 |
说明 |
---|---|
dict.copy() |
返回一个字典的浅复制 |
dict.fromkeys() |
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=None) |
返回指定键的值,如果值不在字典中返回default值 |
key in dict |
键在字典dict里返回true,否则返回false |
dict.keys() |
获取字典里所有的key |
dict.setdefault(key, default=None) |
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict.update(dict2) |
把字典dict2的键/值对更新到dict里 |
dict.values() |
获取字典里所有的value |
四、小结
本节讲解了字典的创建和增删改查,本节内容相对简单,但本节是后面课程的基础,所以一定要掌握本节所讲的
五、作业
将第三章第三节的作业改写成字典。
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- 移动商城第六篇【单品查询、静态化页面】
- 移动商城第七篇【购物车增删改查、提交订单】
- Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】
- OFTest(一):如何忽略一些字段在端口poll报文
- Shiro第二篇【授权、整合Spirng、过滤器】
- Ajax数据的爬取(淘女郎为例)
- 在IDEA中编写Spark的WordCount程序
- Shiro第三篇【授权过滤器、与ehcache整合、验证码、记住我】
- Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
- Caused by: java.net.ConnectException: Connection refused: master/192.168.3.129:7077
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据抓取练习
- python基础 -- 简单实现HTTP协议
- RabbitMQ 学习
- asp连接access,增删改查
- Spring 中的如何自定义事件处理(Custom Event)
- python基础 -- 自定义排序
- nginx(安装)
- Spring 中基于 AOP 的 XML操作方式
- python基础 -- 内建函数
- virtualenv 安装及使用
- Git 分布式版本控制 -- (1、基本使用)
- python爬虫----(scrapy框架提高(1),自定义Request爬取)
- python基础 -- 异常处理try的使用及一些思考
- 记一次关于MySQL与PHP的蠢事
- 编写一个简单的JQuery插件