python自学Day05(自学书籍python编程从入门到实践)
第6章 字典
6.1 一个简单的字典
- 先跟随书本创建一个简单的字典感受一下。
alien_0 = {'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])
输出结果为:
green
5
- 第1行 创建一个alien_0的字典 key 分别为 color 和 points
- 第2行 读取color对应的值 并且 打印出来
- 第3行 读取points对应的值 并且 打印出来
6.2 使用字典
- 字典是一些列的键-值对,每个键都与一个值相关联。
- 可以使用键来访问与之对应的值,值可以是数字、字符串、列表乃至字典。
- 字典是放在{}中一系列的键-值对。键与值之间用 冒号 :隔开
6.2.1 访问字典中的值
- 要获取与键相关的值,可以依次指定字典名和放在方括号内的键 如6.1下代码 alien_0['color']
6.2.2 添加键-值对
- 字典是一种动态结构,可以随时添加键-值对。
- 要添加键-值对,可依次指定字典名、用方括号括起来的键和相关联的值。
- python中不关心键-值对的添加顺序,而只是关心键和值之间的关联联系。
alien_0 = {'color':'green','points':5}
#在字典中添加一个新的键 x_position 值为0
alien_0['x_position'] = 0
#在字典中添加一个新的键 y_position 值为25
alien_0['y_position'] = 25
#打印检查下列表
print(alien_0)
输出结果为:
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
6.2.3 先创建一个空字典
- 先创建一个空字典,然后逐个往里面添加键-值对
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
输出结果为:
{'color': 'green', 'points': 5}
6.2.4 修改字典中的值
- 要修改字典中的值。可以依次指定字典名、用方括号括起来的键以及与键关联的新值。
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
#修改字典中 color 关联值为 red
alien_0['color'] = 'red'
#再度输出字典检查变化
print(alien_0)
输出结果为:
{'color': 'green', 'points': 5}
{'color': 'red', 'points': 5}
6.2.5 删除键-值对
- 使用del语句将字典中的键-值对彻底删除。
- 使用del语句时,必须指定字典名和要删除的键。
alien_0 = {'color':'green','points':5}
del alien_0['color']
print(alien_0)
输出结果为:
{'points': 5}
6.2.6 由类似对象组成的字典
- 字典不仅可以像前面的示例一样存储一个对象,我们也可以用来存贮众多对象的同一信息。
- 换行时需要一行缩进死歌空格(默认tab键)最后一行一个缩进加花括号。
- 还有一些其他可行的格式设置方法。
- print 内容较多需要换行编写代码时,也需要缩进。
#注意 缩进 逗号 花括号 格式
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print("sarah's favorite language is "+
favorite_language['sarah'].title()+
'.')
输出结果为:
sarah's favorite language is C.
练习:
#练习6-1
My_Lover ={
'first_name':'zhang',
'last_name':'keai',
'age':18,
'city':'xiaogan'
}
print(My_Lover)
输出结果为:
{'first_name': 'zhang', 'last_name': 'keai', 'age': 18, 'city': 'xiaogan'}
6.3 遍历字典
- 遍历字典三种方法:键-值对 键 值
6.3.1 遍历所有的键-值对
- 使用for循环编写字典的遍历循环,声明两个变量 key valu(可取任意合规名称)用于存贮对应的键、值。
- 方法items()表示返回一个键-值对列表。
- 键-值对的返回顺序与存贮顺序不同,字典是无序的,只关心键-值之间的关系
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for key,value in favorite_language.items():
print(key.title()+
'\'s favorite language is'+
value.title())
输出结果为:
Jen's favorite language isPython
Sarah's favorite language isC
Edward's favorite language isRuby
Phil's favorite language isPython
6.3.2 遍历字典中所有的键
- 遍历字典时,python中默认是遍历字典的所有键。
- 我们也可以使用方法keys(),这样可以更清晰更明确。
- 方法keys并非只能用于遍历,实际上他返回一个列表,其中包含字典中所有的键。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
friend_name = ['phil','sarah']
for name in favorite_language.keys():
if name in friend_name:
print('My friend '+
name +
' is in the list!')
输出结果为:
My friend sarah is in the list!
My friend phil is in the list!
6.3.3 按顺序遍历字典中所有键
- 字典总是明确的记录键和值之间的关系,但是获取字典元素时,获取顺序是不可预测的。
- 要以特定的顺序返回元素,一种方法是在for循环中对返回的键做排序。
- 使用函数sorted来获得特定顺序拍了的键列表的副本。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for name in sorted(favorite_language.keys()):
print(name.title() + ' is in the dictionary')
输出结果为:
Edward is in the dictionary
Jen is in the dictionary
Phil is in the dictionary
Sarah is in the dictionary
6.3.4 遍历字典中的所有值
- 字典中键是独一无二的,不可重复的,但是值并不是,像上述代码中的 python在值中出现了两次。
- 可以使用values()方法对字典进行值得遍历,返回一个值得列表,不包含任意键。
- 如果字典中存在大量重复值,而这些值我们不想要他重复,我们可以使用set()来对返回值得列表去重。
- 集合类似于列表,但是集合内的元素必须是独一无二的。
favorite_language = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for language in set(favorite_language.values()):
print(language.title())
输出结果为:
Ruby
C
Python
6.4 嵌套
- 将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。
6.4.1 字典列表
#创建空列表
aliens = [ ]
#使用for循环计次循环,循环30次。
for new_alien in range(0,30):
#每次循环将字典new_alien添加到列表中去
new_alien={'color':'green','points':5}
aliens.append(new_alien)
#结束后输出列表的长度,可以看到包含30个元素,每个元素都是独立的列表。
print(len(aliens))
输出结果为:
30
6.4.2 在字典中存储列表
- 每当需要在字典的一个键关联多个值得时候,都可以在字典中嵌套一个列表。
- 列表和字典的嵌套层级不应太多。如过嵌套层级太多,很有可能有更简单的解决问题方案。
My_imformation = {
'姓名':'饶庆龙',
'爱好':['篮球','足球','英雄联盟']
}
print('你好'+My_imformation['姓名']+'先生!这是您的爱好:')
for hobbies in My_imformation['爱好']:
print('\t'+hobbies )
输出结果为:
你好饶庆龙先生!这是您的爱好:
篮球
足球
英雄联盟
6.4.3 在字典中存贮字典
- 可以在字典中嵌套字典,但是这样做,代码可能很快复杂起来。
- 倘若字典包含不同的键,for内部循环的代码将会更加的复杂。
My_imformation ={
'饶庆龙': {
'性别':'男',
'住址':'湖北',
'爱好':['篮球','足球','英雄联盟']
},
'张余丽':{
'性别':'女',
'住址':'北京',
'爱好':['王者','睡觉','追剧']
},
}
Names = []
for name,imformations in My_imformation.items():
if imformations['性别'] == '男':
print(name+'先生的爱好是:')
for hobby in imformations['爱好']:
print('\t'+hobby)
if imformations['性别'] == '女':
print(name+'女士的爱好是:')
for hobby in imformations['爱好']:
print('\t'+hobby)
- 第1行到第12行,我们构建了一个字典。
- 字典中包含了两个 键 一个 饶庆龙 一个 张余丽
- 第14行 我们使用for循环我们构建遍历字典键-值对 获得键存贮为 name 获得值存储为 imformations
- 第15行 我们判断值中列表对应的键 性别的值是否是 男
- 第16行 判断成功的话我们输出 name+先生的爱好是,如果判断失败进入第19行判断
- 第17行 对 ‘爱好’ 对应的列表值进行循环输出
- 第18行 输出时加上 '\t'制表符以及爱好内容循环输出
- 第19行 当第15行条件测试不通过时跳到该条条件测试
输出结果为:
饶庆龙先生的爱好是:
篮球
足球
英雄联盟
张余丽女士的爱好是:
王者
睡觉
追剧
练习:
Rao = {
'first_name':'rao',
'last_name':'qinglong',
'age':26,
'city':'xiaogan'
}
Zhang = {
'first_name':'zhang',
'last_name':'yuli',
'age':19,
'city':'beijing'
}
Li = {
'first_name':'li',
'last_name':'keqiang',
'age':36,
'city':'hainan'
}
Imformation = [Rao,Zhang,Li]
for info in Imformation:
print(info)
输出结果为:
{'first_name': 'rao', 'last_name': 'qinglong', 'age': 26, 'city': 'xiaogan'}
{'first_name': 'zhang', 'last_name': 'yuli', 'age': 19, 'city': 'beijing'}
{'first_name': 'li', 'last_name': 'keqiang', 'age': 36, 'city': 'hainan'}
Rao = {
'first_name':'rao',
'last_name':'qinglong',
'age':26,
'city':'xiaogan'
}
Zhang = {
'first_name':'zhang',
'last_name':'yuli',
'age':19,
'city':'beijing'
}
Li = {
'first_name':'li',
'last_name':'keqiang',
'age':36,
'city':'hainan'
}
Imformation = [Rao,Zhang,Li]
for info in Imformation:
print(info['first_name'].title()+info['last_name'].title()+' is '+str(info['age']) + ' in '+info['city'].title())
输出结果为:
RaoQinglong is 26 in Xiaogan
ZhangYuli is 19 in Beijing
LiKeqiang is 36 in Hainan
python自学Day05(自学书籍python编程从入门到实践)的更多相关文章
- 《Python编程:从入门到实践》分享下载
书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...
- 《python编程从入门到实践》2.3字符串
书籍<python编程从入门到实践> 2.3字符串 知识模块 print()函数,函数名称突出为蓝色,输出括号内的变量或者字符创. 变量名的命名:尽量小写字母加下划线并且具有良好的描述性, ...
- Python编程从入门到实践笔记——异常和存储数据
Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...
- Python编程从入门到实践笔记——文件
Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...
- Python编程从入门到实践笔记——类
Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- Python编程从入门到实践笔记——if语句
Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...
- Python编程从入门到实践笔记——操作列表
Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...
随机推荐
- 【题解】合唱队形——LIS坑爹的二分优化
题目 [题目描述]N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形.合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1 ...
- SpringMvc上传图片及表单提交(单文件+实体类参数提交)
前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...
- node响应头缓存设置
我把react项目分成4个板块,在路由的顶层 今天在手机上打开react项目的时候,发现平级路由跳转时某一个图片较多的板块图片总是渲染得很慢,这分明是重新发起请求了. 然后我先查一下react-rou ...
- Python PIL Image图片显示系列
1. PIL Image图片显示 在使用PIL函数中的Image方法读取图片时,对于图片的shape,可能有不少宝宝存在疑惑.是什么疑惑了?就是image = Image.open(image_pat ...
- iperf压测linux网卡带宽
1.安装 yum install iperf --enablerepo=epel 2.启动服务端 iperf -s -i 1 3.启动客户端测试10分钟 iperf -c 172.16.3.153 - ...
- python3.x 基础六:面向对象
面向对象特性 class 类 一个类是对一类拥有相同属性的对象的描述,在类中定义了这些对象都具备的属性/共同方法 object对象 一个对象指一个类实例化后的实例,一个类必须经过实例化后才能在程序中调 ...
- Spring 基于 Java 的配置
前面已经学习如何使用 XML 配置文件来配置 Spring bean. 基于 Java 的配置可以达到基于XML配置的相同效果. 基于 Java 的配置选项,可以使你在不用配置 XML 的情况下编写大 ...
- jdk8 Collections#sort究竟做了什么
前言 Collections#sort 追踪代码进去看,会调用到Arrays.sort,看到这里时,你肯定会想,这不是很简单,Arrays.sort在元素较少时使用插入排序,较多时使用快速排序,再多时 ...
- Android_存储之文件存储
前面几篇随笔 讲到的关于存储的,SharedPreferences.Room.数据库等 最终都是以文件形式 存储到手机上的(除特殊的存储于手机内存的:如Room可以创建内存数据库). 这些存储方式,A ...
- [256个管理学理论]004.鲶鱼效应(Catfish Effect)
鲶鱼效应(Catfish Effect) 来自于大洋彼岸的让你看不懂的解释: 鲶鱼效应(Catfish Effect):鲶鱼在搅动小鱼生存环境的同时,也激活了小鱼的求生能力.鲶鱼效应是采取一种手段或措 ...