# 遍历删除字典元素_第六章 字典

c3bfe298ed97f8d02727274dea022d57.png

一、使用字典

一个简单的字典

675c9c982f53a6bc26e8d8f84f2394c2.png

字典是一系列键——值对。每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。

在Python中,字典用放在花括号{}中的一系列键——值对表示。

键——值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键——值对之间用逗号分隔。在字典中,想存储多少个键——值对都可以。最简单的字典只有一个键——值对。

1、访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键。

字典中可包含任意数量的键——值对。

967359f1e82991398979533a60edcdab.png

str(new_points)是将得到的5转换成字符串

2、添加键——值对

字典是一种动态结构,可随时在其中添加键——值对。要添加键——值对,可依次指定字典名、用方括号括起的键和相关联的值。

d7c300bb5947ebeec63287fb8ccd9da2.png

键—值对的排列顺序与添加顺序不同。(书上是这么写的,但是为啥我的顺序相同)

Python不关心键——值对的添加顺序,而只关心键和值之间的关联关系。

3、先创建一个空字典

有时候,在空字典中添加键—值对是为了方便,而有时候必须这样做。为此,可先使用一对空的花括号定义一个字典,再分行添加各个键——值对。

7b0c2655e4f4a28a962903ba6b1e2693.png

使用字典来存储用户提供的数据或在编写能自动生成大量键——值对的代码时,通常都需要先定义一个空字典。

4、 修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

bf429e8569e0c952f0138b7910f51289.png

c8e393b77f87a47703f478ec45bfe249.png

5、删除键——值对

对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除。使用del语句时,必须指定字典名和要删除的键。

444dd96aee834db9c6a9d6a4edce645b.png

del(alien_0['points'])换成del alien_0['points']也行

删除的键—值对永远消失了

6、由类似对象组成的字典

可以使用字典来存储众多对象的同一种信息

定义好字典后,在最后一个键—值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐。另外一种不错的做法是在最后一个键—值对后面也加上逗号,为以后在下一行添加键—值对做好准备。

7fc35d4a8a5ad29f8464b82cd7e81fb3.png

将较长的print语句分成多行:

9c27ea074d6d05ea8588d26f8fd687a1.png

二、遍历字典

一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典的所有键—值对、键或值。

1、遍历所有的键——值对

9cfbe9b7f500a6955a56009e37cb4f08.png

要编写用于遍历字典的for循环,可声明两个变量,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。

上面for语句中包含字典名和方法items(),它返回一个键—值对列表。

即便遍历字典时,键—值对的返回顺序也与存储顺序不同(我这里还是相同)。Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。

cebe77fe9e5525f9b15202bfaf1d951a.png

2、 遍历字典中的所有键

在不需要使用字典中的值时,方法keys()很有用。

cb72926c6e0be75b9a975c4eb95d88f0.png

遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name in favorite_language.keys():替换为for name in favorite_language:输出将不变。显式地使用方法keys()可让代码更容易理解。

3a2a13a4450001001d4ae20e952584df.png

9527f266307bdc99911f1c8f55e04f06.png

95e89cc386c8caf682ebb3a594ee50bb.png

3、按顺序遍历字典中的所有键

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。

要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本。

63c529f3a97d2e29bd79228a5a985c9d.png

4、遍历字典中的所有值

方法values()返回一个值列表,而不包含任何键。

0496696defe305b28b46d96c73bdbe14.png

这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。

为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的。

f3cf0e63279c269c3b66d57528b4480e.png

通过对包含重复元素的列表调用set()可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。

三、 嵌套

有时需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

1、字典列表

3cb4ecb1be82f820aae84a7571521567.png

c982758f2944eb92a5379275efa8a427.png

1a413970e456efe898628118149981f8.png

f2a7da29e85fdf9b5e7234be62fb5022.png

经常需要在列表中包含大量的字典,而其中每个字典都包含特定对象的众多信息。

2、在字典中存储列表

be3dd479e066b9e0dc549b5c02d1e239.png

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

8e4d914586c415b570d145d59539a28e.png

4505610bfc245abe706941012d87a22f.png

3、在字典中存储字典

adbd18a23d2955d97b445e60176cd7dd.png

7f77d79b826a2dadcc856e2acd2b3484.png
#6-1人
#使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。
#该字典应包含键first_name、last_name、age和city。
#将存储在该字典中的每项信息都打印出来。
people = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',}
print("The first_name is "+people['first_name']+".")
print("The last_name is "+people['last_name']+".")
print("His name is "+people['last_name']+" "+people['first_name']+".")
print("He is "+str(people['age'])+" yesrs old.")
print("He is living in "+people['city']+" now.")#6-2喜欢的数字
#使用一个字典来存储一些人喜欢的数字
#请想出5个人的名字,并将这些名字用作字典中的键
#想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中
#打印每个人的名字和喜欢的数字
#为让这个程序更有趣,通过询问朋友确保数据是真实的。
numbers = {'alice':'4','bob':'5','ken':'9','james':'8','june':'3',}
print("Alice's favorite number is "+numbers['alice']+".")
print("Bob's favorite number is "+numbers['bob']+".")
print("ken's favorite number is "+numbers['ken']+".")
print("James's favorite number is "+numbers['james']+".")
print("June's favorite number is "+numbers['june']+".")#6-3词汇表
#Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
#想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
#以整洁的方式打印每个词汇及其含义。
#为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;
#也可在一行打印词汇,再使用换行符(n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
cihui = {'列表':'是基本数据结构','字典':'一系列键——值对','变量':'不确定值的量','函数':'完成特定功能的程序','编译':'把高级语言编程二进制语言',
}
print("列表"+":"+cihui['列表'])
print("字典"+":"+cihui['字典'])
print("变量"+":"+cihui['变量'])
print("函数"+":"+cihui['函数'])
print("编译"+":"+cihui['编译'])#6-4词汇表2
#既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码
#将其中的一系列print语句替换为一个遍历字典中的键和值的循环。
cihui = {'list':'是基本数据结构','dict':'一系列键——值对','var':'不确定值的量','fun':'完成特定功能的程序','com':'把高级语言编程二进制语言',
}
for key, value in cihui.items():print(key+": "+value)#6-5河流
#创建一个字典,在其中存储三条大河流及其流经的国家。
#其中一个键—值对可能是'nile': 'egypt'。
#使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
#使用循环将该字典中每条河流的名字都打印出来。
#使用循环将该字典包含的每个国家的名字都打印出来。
rivers = {'nile': 'egypt','changjiang': 'china','huanghe': 'china'
}
for river, country in rivers.items():print("The "+river.title()+" runs through "+country.title()+".")
for river in rivers.keys():print(river.title())
for country in rivers.values():print(country.title())#6-6调查
#在6.3.1节编写的程序favorite_languages.py中执行以下操作
#创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
#遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢
#对于还未参与调查的人,打印一条消息邀请他参与调查。
favorite_language = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
wei = ['erin', 'june', 'bob']
for name in favorite_language:print(name.title()+", thank you for taking for the poll.")
for name in wei:if name not in favorite_language:print("Hi "+name.title()+", I'm inviting you to take the poll.")#6-7人
#在为完成练习6-1而编写的程序中,再创建两个表示人的字典
#然后将这三个字典都存储在一个名为people的列表中
#遍历这个列表,将其中每个人的所有信息都打印出来。
people_0 = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',}
people_1 = {'first_name':'Xing','last_name':'Wang','age':20,'city':'Beijing',}
people_2 = {'first_name':'La','last_name':'La','age':35,'city':'Shenyang',}
people = [people_0, people_1, people_2]
for person in people:print(person)#6-8宠物
#创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名
#在每个字典中,包含宠物的类型及其主人的名字
#将这些字典存储在一个名为pets的列表中
#再遍历该列表,并将宠物的所有信息都打印出来
pet_0 = {'type':'cat','zhuren':'alice'
}
pet_1 = {'type':'dog','zhuren':'bob'
}
pets = [pet_0, pet_1]
for pet in pets:print(pet)#6-9喜欢的地方
#创建一个名为favorite_places的字典
#在这个字典中,将三个人的名字用作键
#对于其中的每个人,都存储他喜欢的1~3个地方
#遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来
favorite_places = {'alice':['hangzhou', 'sanya'],'bob':['yunnan','chongqing'],'june':['sichuan', 'caoyuan', 'dalian']
}
for name, places in favorite_places.items():print("n"+name.title()+"'s favorite places are: ")for place in places:print(place.title())#6-10喜欢的数字
#修改为完成练习6-2而编写的程序
#让每个人都可以有多个喜欢的数字
#然后将每个人的名字及其喜欢的数字打印出来
numbers = {'alice':['4','6','9'],'bob':['5','4','7','9'],'ken':['2','5','8'],'james':['8','6','4'],'june':['3','6','9'],}
for name, numbers in numbers.items():print(name.title()+"'s favorite numbers are:")for number in numbers:print(number)#6-11城市
#创建一个名为cities的字典,其中将三个城市名用作键
#对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实
#在表示每座城市的字典中,应包含country、population和fact等键
#将每座城市的名字以及有关它们的信息都打印出来
cities = {'sanya':{'country':'china','population':300000,'fact':'nanfang',},'yunnan':{'country':'china','population':5000000,'fact':'nanfang',},'dalian':{'country':'china','population':200000,'fact':'beifang',},
}
for city_name, city_info in cities.items():print("nCity:"+city_name.title())population = city_info['population']fact = city_info['fact']print("t有"+ str(population) +"人口")print("t在"+fact)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SVM】简单介绍(二)

1、SVM另一种推法 我们不管分类平面,直接去假设Margin的两个边界: Plus-plane {x:w⋅xb1}Minus-plane {x:w⋅xb−1}\begin{aligned} & \text { Plus-plane }\{\boldsymbol{x}: \boldsymbol{w} \cdot \boldsymbol{x}b1\} \\ & \text { Minus-plan…

图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...

普通操作1. 读取像素读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。需要注意的是, OpenCV 读取图像是 BGR 存储显示。灰度图片读取操作:import cv2 as cv# 灰度图像读取gray_…

cocopods

一、什么是CocoaPods 1、为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson、AFNetworking、Reachability等等。使用这些库的时候通常需要: 下载开源库的源代码并引入工程向工程中添加开源库使用到的framework…

CSS3学习手记(10) 过渡

CSS3过渡 允许css的属性值在一定的时间内平滑地过渡在鼠标单击、获取焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值transition transition-property属性检索或设置对象中的参与过渡的属性 语法 transition-property:none|all|property …

全局搜索快捷键_Windows 自带的聚合搜索来了,与 Mac 的 Spotlight 相比体验如何?...

最近 Windows 10 推出了自带的聚合搜索功能 PowerToys Run,取代了之前的 WinR。苹果的 macOS 以人性化著称,有几个功能让 Windows 用户一直很羡慕,比如全局的聚合搜索工具 Spotlight。在任何界面 command空格,输入关键字就能搜索电…

【SVM】简单介绍(三)

我们考虑SVM的对偶问题,我们通常是在对偶空间中进行求解的。 1、Lagrange Multipliers 对于一个很一般的问题 Minimize f(x)subject to {a(x)≥0b(x)≤0c(x)0\begin{aligned} \text { Minimize } & f(x) \\ \text { subject to } \quad & \left\{\begin{a…

寻找白板上的便签条

问题来源:http://answers.opencv.org/question/162480/contour-detection-for-gray-stickers-on-white-background/ 题目的大概意思就是这样的白板,寻找上面的各种便签条。我找到了橘色的,结果是这样代码是这样Mat src imread("gray-st…

gg

转载于:https://www.cnblogs.com/lyzuikeai/p/7091206.html

HDU 1728 逃离迷宫

这道题做的我想哭啊。。WA了将近十次了吧 一开始我用数组模拟的队列,后来和老大代码对拍,感觉改的是基本都一模一样了,还是WA 实在没有办法了,改用queue了 题目里的x是列y是行,和代码里的反过来的,要注意&a…

Nginx(六)-- 配置文件之Gzip

1.概念及作用 Gizp主要对内容、静态文件做压缩,用来提升网站访问速度,节省带宽。 2.使用方法 gzip既可以配置在server中,也可以配置在server外,此处配置在server中,如下: 说明:  gizp on|off 是…

误码率越高越好还是越低越好_夜间护理步骤越多越好还是越少越好?NFF

现在很多人都知道了夜晚是护肤的黄金护肤时间,有些很聪明的姐妹就从夜晚着手,使用很多种护肤品,希望达到事半功倍的效果,但好皮肤不常有,皮肤问题却常有!既然如此,不少人就问了,夜间…

【随机森林】random forests 简单介绍

Random Forest,顾名思义 Random 就是随机抽取; Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务。RF用了两次随机抽取, 一次是对训练样本的随机抽取; 另一…

信息安全系统设计基础第三周学习总结—20135227黄晓妍

一.Vim编辑器 1.Vim的六种模式 2.Vim三种常用模式的使用方式,以及三者的切换。打开Vim即默认进入普通模式,按i进入插入模式,按esc从插入模式退出普通模式,再按:进入命令行模式。 普通模式下游标的移动 按键 说明 h …

脚本命令_SAP HANA数据库备份命令脚本

需求场景:HANA数据库版本 2.044 , SYSTEMDB库1个,Tenant库有3个 PRD、POP、HAP需要用命令行备份。备份原理说明:1、脚本同hana studio 一样,用SYSTEM用户去备份所有的数据库。2、备份脚本工作在数据库管理员用户下&…

CSS3中border-radius、box-shadow与gradient那点事儿

一、border-radius border-radius用于添加圆角边框,用处非常广泛。 1)一个值,代表了四个角 .radius-one {/* Safari 3-4, iOS 1-3.2, Android 1.6- */-webkit-border-radius: 12px; /* Firefox 1-3.6 */-moz-border-radius: 12px; /* Opera 1…

编程 跳台阶_Java版剑指offer编程题第8题--跳台阶

跟learnjiawa一起每天一道算法编程题,既可以增强对常用API的熟悉能力,也能增强自己的编程能力和解决问题的能力。算法和数据结构,是基础中的基础,更是笔试的重中之重。不积硅步,无以至千里;不积小流&#x…

获取汉字的首字母(转)

转换 获取一个汉字的拼音首字母。 GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0&#xf…

Deep Learning(深度学习) 学习笔记(四)

神经概率语言模型,内容分为三块:问题,模型与准则,实验结果。[此节内容未完待续...] 1,语言模型问题 语言模型问题就是给定一个语言词典包括v个单词,对一个字串做出二元推断,推断其是否符合该语言…

JavaScript 运行机制

JavaScript 运行机制 阅读目录 一、为什么JavaScript是单线程?二、任务队列三、事件和回调函数四、Event Loop五、定时器六、Node.js的Event Loop七、关于setTimeout的测试一、为什么JavaScript是单线程? JavaScript语言是单线程,也就是说&am…

android自定义倒计时控件示例

这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下:import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import andro…