python学习—伍—字典
目录
零、字典基础
简单字典举例
字典是什么
访问字典中的值
添加键值对
创建空字典
修改字典中的值
删除键值对
由类似对象组成的字典
使用 get() 来访问值
壹、遍历字典
遍历所有键值对
遍历字典中的所有键
遍历字典中所有值
贰、嵌套
字典列表
在字典中存储列表
在字典中存储字典
叁、小结
零、字典基础
简单字典举例
建立一个字典,包含了姓名学号等信息
information = {'name':'lisa','id':'001'}
print(information['name'])
print(information['id'])
结果:字典 information 存储了姓名和学号,并将其打印出来。
字典是什么
在 python 中,字典是一系列键值对。每一个键都与一个值相关联,你可以使用键来访问相关联的值。
与键相关联的值可以是数、字符串、列表甚至字典。
字典用放在花括号 { } 里的一系列键值对表示,键与值之间用冒号分隔,键值对之间用逗号分隔。可参考前文示例。
你可以在字典中存储多个键值对,而最简单的字典只有一个键值对
>>> information = {'name':'lisa'}
这个字典只存储了一个键值对,说明了 name 是 lisa,‘name’ 是键,与之对应的值为 ‘lisa’
访问字典中的值
要获取键值,需依次指定字典名和键名
>>> information = {'name':'lisa'}
>>> print(information['name'])
lisa
上述代码就返回了 information 中与键 ‘name’ 相关联的值 lisa
而如果键并不存在,则会报错
>>> print(information['id'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'id'
添加键值对
字典是一种动态结构,可以随时在其中添加键值对。
添加键值对时,需依次指定字典名、用方括号括起来的键和相关联的值
information = {'name':'lisa','id':'001'}
print(information)information['sex'] = 'female'
information['age'] = 18
print(information)
结果:可以看到,字典中增加了两队键值对,键分别是 ‘sex’ 和 ‘age’,值分别是 ‘female’ 和 18
python 3.7后,字典中元素的排列顺序与定义以及添加顺序相同
创建空字典
有时我们需要创建一个空字典,然后在为其添加键值对
可以直接使用一对空花括号来创建一个空字典
information = {}
print(information)information['name'] = 'lisa'
information['sex'] = 'female'
information['age'] = 18
print(information)
结果:
使用字典来存储用户提供的数据或需要自动生成大量键值对的代码时,通常需要先创建一个空字典。
修改字典中的值
要修改字典中的值,需要依次指定字典名、用方括号括起来的键,以及与改建相关联的新值
比如有时可能我们需要修改一个人的性别
information = {'name':'lisa','id':'001','sex':'male'}
print(f"the sex of {information['name']} is {information['sex']}")information['sex'] = 'female'
print(f"the sex of {information['name']} is {information['sex']} now")
结果:
删除键值对
有时,对于一些我们不再需要的信息,我们可以使用 del 将其彻底删除,使用 del 时,需指定字典名和要删除的键
比如,我们删除字典中的 ‘sex’ 键值
information = {'name':'lisa','id':'001','sex':'male'}
del information['sex']
print(information)
结果:
由类似对象组成的字典
之前的示例,字典存储的都是一个对象的多个信息。但你完全可以使用字典来存储众多对象的同一信息。
favorite_fruit = {'lisa':'apple','jerry':'pear','tom':'peach','vegetable':'orange'
}
print(favorite_fruit)
print(f"lisa's favorite fruit is {favorite_fruit['lisa']}")
结果:
这个字典的每个键是不同的名字,而对应的值是他们喜欢的水果。
给定名字,我们就能得到他最爱的水果
使用 get() 来访问值
刚才我们介绍过,如果访问字典中没有的键会出错
但 get() 可以帮我们解决这一问题,在指定键不存在时会返回一个默认值,以此避免出错
get() 的第一个参数用于指定键;第二个参数用于指定键不存在时返回的值,若未指定值,则会返回 None
favorite_fruit = {'lisa':'apple'}choose_one = favorite_fruit.get('lisa','no value')
choose_two = favorite_fruit.get('tom','no value')print(choose_one)
print(choose_two)
结果:
壹、遍历字典
遍历所有键值对
之前讲过如何访问字典中的值,但如果要获悉字典中的所有信息,我们就需要使用 for 循环来遍历字典
favorite_fruit = {'lisa':'apple','tom':'pear','vegetable':'orange'}
for name,fruit in favorite_fruit.items():print(f"{name}'s favorite fruit is {fruit}")
结果:
首先先要声明两个变量,用来存储键值对中的键和值
favorite_fruit.items() 返回一个键值对列表,然后,for 循环依次将每个键值对赋给指定的两个变量,最后再将其打印出来
遍历字典中的所有键
在不需要使用字典中的值时,我们可以使用 keys() 方法
比如,我们要打印所有人的姓名
favorite_fruit = {'lisa':'apple','tom':'pear','vegetable':'orange'}
for name in favorite_fruit.keys():print(name.title())
结果:
而且,遍历字典时,会默认遍历所有的键,所以我们可以将 keys() 省略,同样能得到上述结果,但是有了 keys() 让代码更容易理解。
同时,如果我们加上 sorted() 就可以按顺序遍历字典中的所有键
可以看到,本来第二的 amy 被重新排序到了第一位。
遍历字典中所有值
和刚才思路一样,只不过我们这次只对字典中的值感兴趣,可以使用 values() 来返回一个值列表
favorite_fruit = {'lisa':'apple','amy':'pear','vegetable':'orange','tom':'apple'}
for fruit in favorite_fruit.values():print(fruit)
结果:
我们可以看到,我们得到了所有的值,但是有一个重复的值 apple
所以我们可以使用 set 来剔除重复值
favorite_fruit = {'lisa':'apple','amy':'pear','vegetable':'orange','tom':'apple'}
for fruit in set(favorite_fruit.values()):print(fruit)
结果:利用集合的性质,我们成功的让多出来的 apple 消失了
贰、嵌套
将一系列字典存储在列表中,或将列表作为值存储在字典中,叫做嵌套
字典列表
字典 information 包含一个人的各种信息,但却无法存储第二个人的,更别说更多人的信息。
但是如果我们创建一个字典列表则可能实现此功能
stu_1 = {'name':'lisa','id':'001','sex':'female','age':18}
stu_2 = {'name':'tom','id':'002','sex':'male','age':19}
stu_3 = {'name':'vegetable','id':'003','sex':'male','age':18}stu_info = [stu_1,stu_2,stu_3]
for student in stu_info:print(student)
结果:我们建立三个人的字典,并将其保存在一个列表中,然后遍历这个列表,并打印出来
在字典中存储列表
首先创建一个字典,键值对对应着爱吃的水果和水果,但每个人可能爱吃的水果有很多,这时我们就需要将多个值存入列表中,然后将此列表作为字典的值。
favorite_fruit = {'lisa':['apple','orange','banana'],'tom':['apple','pear'],'vegetable':['peach','apple']
}
for name,fruits in favorite_fruit.items():print(f"\n{name}'s favorite fruit are:")for fruit in fruits:print(fruit)
结果:
在字典中存储字典
我们也可以在字典中嵌套字典,但是这样会使代码变得很复杂
比如说我们要存学生信息,我们先定义了一个字典,并把键作为姓名,而值则是另一个字典,另一个字典中又有很多键值对来表示年龄,性别等信息
stu_info = {'lisa':{'id':'001','sex':'female','age':18},'tom':{'id':'002','sex':'male','age':19},'vegetable':{'id':'003','sex':'male','age':18}
}
for name,info in stu_info.items():print(f"\nname:{name}")print(f"id:{info['id']}")print(f"sex:{info['sex']}")print(f"age:{info['age']}")
结果:
叁、小结
难能更可贵的是,我竟然坚持了下来,每天在键盘上敲敲打打,完成的代码行也越来越多,花费的时间也越来越多,也不知道明天是什么样,是晴天?还是雨天呢?明天又会发生什么呢? 我们不可预期未来,唯有把握现在,加油,朝着幸福的终点继续奔跑吧。未来可期!
python学习—伍—字典相关推荐
- Python学习.第六天.字典
Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...
- SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理
SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...
- Python学习:字典(dictionary)
Python学习:字典(dictionary) 异常处理小技巧 异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个 ...
- python学习(字典、用户输入和while循环)
前言:上次学习到了if语句,这次接着进行学习. 字典 字典能够准确地为各种真实物体建模,且能够将相关信息关联起来. 使用字典 字典是一系列的键--值对,一个建对应一个值,值可以为数字.字符串等 在Py ...
- Python学习(五)字典
字典 1.一个简单的字典 现在想存储一个人的基本信息,比如姓名,年龄等信息,应该怎样存储呢?下面是一个简单的字典,存储了一个人的相关信息. people_0 = {"name": ...
- Python学习6 字典基础知识和常用函数
字典概念 字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 ...
- python学习04——字典
文章目录 1. 字典的创建 2. 字典的元素查找 2.1 使用`[]` 2.2 使用`get()`函数 3. 字典的增删改操作 3.1 判断元素 3.2 增加元素 3.3 删除元素 3.3.1 删除某 ...
- Python 学习笔记 - 字典
1.使用字典 字典 是一系列键-值对. * 每个键都与一个值相关联,你可以使用键来访问与之相关联的值. * 与键相关联的值可以是数字.字符串.列表乃至字典. * 事实上,可将任何Python对象用做字 ...
- Python学习之字典
#字典 ''' 语法: 字典名 = {'键':'值','键':'值',....} 例如:test = {'color':'pink','points':7} print(test['color']) ...
最新文章
- quartz定时定时任务执行两次
- solidworks钣金插件_SolidWorks钣金三圆弧交点如何展开?大神和小白请进
- 寻找重复的子树 Find Duplicate Subtrees
- mysql多实例(mysqld_multi方式)
- RESTful API 设计指南 (转)
- java step1:基础知识1
- 苹果发布 2017 年度应用榜单,你的 App 榜上有名吗?
- 兰州市智慧城市建设再迈出实质性一步
- SSI指令使用详解(转)
- smart原则_如何利用SMART原则制定适合自己的高效学习计划
- 微信公众号网页授权登录
- 第三次科技革命(一)
- 深入理解MyBatis缓存
- python k线形态识别_K线形态及识别要点大全
- Andoird开发--指南针(基于手机传感器)
- 5个最佳团队交流应用程序
- 华为平远程windows电脑
- MongoDB学习指导
- 整理几个叮咚抢菜、美团买菜助手
- 什么是vue全家桶?