Python3 基础学习笔记 C05【字典】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实战》、《跟老齐学Python:数据分析》和《Python大学实用教程》畅销图书。


Python3 基础学习笔记第五章【字典】

目录

  • 【5.1】一个简单的字典
    • 【5.1.1】访问字典中的值
    • 【5.1.2】添加键-值对
    • 【5.1.3】修改字典中的值
    • 【5.1.4】删除键-值对
    • 【5.1.5】由类似对象组成的字典
  • 【5.2】遍历字典
    • 【5.2.1】方法 items() 遍历所有的键-值对
    • 【5.2.2】方法 keys() 遍历字典中所有的键
    • 【5.2.3】函数 sorted() 按顺序遍历字典中的所有键
    • 【5.2.4】方法 values() 遍历字典中的所有值
  • 【5.3】嵌套
    • 【5.3.1】字典列表
    • 【5.3.2】在字典中存储列表
    • 【5.3.3】在字典中存储字典
  • 【5.4】其他方法
    • 【5.4.1】方法 clear() 删除字典内所有元素
    • 【5.4.2】方法 fromkeys() 用于创建一个新字典
    • 【5.4.3】方法 get() 返回指定键的值
    • 【5.4.4】方法 \_\_contains\_\_() 判断键是否存在于字典中
    • 【5.4.5】方法 setdefault() 为键的值设置默认值。
    • 【5.4.6】方法 update() 把一个字典的键值对更新到另一个字典里


【5.1】一个简单的字典

fruits = {'apple' : 'red' , 'number' : 5}
print(fruits['apple'])
print(fruits['number'])

输出结果如下:

red
5

在Python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何Python对象用作字典中的值。键-值对是两个相关联的值。在指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对之间用逗号分隔。在字典中,想储存多少个键-值对都可以

【5.1.1】访问字典中的值

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

fruits = {'apple' : 'red' , 'number' : 5}
number_fruits = fruits['number']
print("The number of apple is " + str(number_fruits) + "!")

输出结果如下:

The number of apple is 5!

【5.1.2】添加键-值对

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

fruits = {'apple' : 'red' , 'number1' : 5}
print(fruits)
fruits['banana'] = 'yellow'
fruits['number2'] = 13
print(fruits)

输出结果如下:

{'apple': 'red', 'number1': 5}
{'apple': 'red', 'number1': 5, 'banana': 'yellow', 'number2': 13}

注意:键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系

有时候为了方便也可以先使用一对空的花括号定义一个字典,再分行添加各个键-值对:

fruits = {}
fruits['banana'] = 'yellow'
fruits['number2'] = 13
print(fruits)

输出结果如下:

{'banana': 'yellow', 'number2': 13}

【5.1.3】修改字典中的值

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

fruits = {'color' : 'red'}
print("The color of the fruits is " + fruits['color'] + "!")
fruits['color'] = 'yellow'
print("The color of the fruits is " + fruits['color'] + " now!")

输出结果如下:

The color of the fruits is red!
The color of the fruits is yellow now!

进阶:对一个能够以不同速度移动的外星人的位置进行跟踪,为此,我们将储存该外星人的当前速度,并据此确定该外星人将向右移动多远:

alien = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x-position: " + str(alien['x_position']))#向右移动外星人,据外星人当前速度决定将其移动多远
if alien['speed'] == 'slow':x_increment = 1
elif alien['speed'] == 'medium':x_increment = 2
else:x_increment = 3#新位置等于老位置加上增量
alien['x_position'] = alien['x_position'] + x_increment
print("New x_position: " + str(alien['x_position']))

输出结果如下:

Original x-position: 0
New x_position: 2

【5.1.4】删除键-值对

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

fruits = {'apple' : 'red' , 'number' : 5}
print(fruits)
del fruits['number']
print(fruits)

输出结果如下:

{'apple': 'red', 'number': 5}
{'apple': 'red'}

【5.1.5】由类似对象组成的字典

字典储存的可以是一个对象的多种信息,也可以储存众多对象的同一种信息,例如要调查很多人最喜欢的编程语言:

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
print("Sarah's favorite languages is " + favorite_languages['sarah'].title() + "!")

输出结果如下:

Sarah's favorite languages is C!

【5.2】遍历字典

【5.2.1】方法 items() 遍历所有的键-值对

使用for循环来遍历字典:

name = {'username' : 'efermi' ,'first' : 'enrico' ,'last' : 'fermi' ,}
for key , value in name.items():print("\nKey: " + key)print("Value: " + value)

输出结果如下:


Key: username
Value: efermiKey: first
Value: enricoKey: last
Value: fermi

for语句的第二部分包含字典和方法items(),它返回一个键-值对列表。接下来,for循环依次将每个键-值对储存到指定的两个变量中

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
for name, language in favorite_languages.items():print(name.title() + "'s favorite language is " + language.title() + ".")

输出结果如下:

Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Java.

【5.2.2】方法 keys() 遍历字典中所有的键

在不需要使用字典中的值时,方法key()很有用,下面来遍历字典favorite_languages,并将每个被调查者的名字都打印出来:

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
for name in favorite_languages.keys():print(name.title())

输出结果如下:

Jen
Sarah
Edward
Phil

遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name in favorite_languages.keys():替换为for name in favorite_languages:输出结果将不变
进阶:

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
friends = ['phil', 'sarah']
for name in favorite_languages.keys():print(name.title())if name in friends:print("Hi " + name + ", I see your favorite languages is " + favorite_languages[name].title() + "!")

输出结果如下:

Jen
Sarah
Hi sarah, I see your favorite languages is C!
Edward
Phil
Hi phil, I see your favorite languages is Java!

【5.2.3】函数 sorted() 按顺序遍历字典中的所有键

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的,要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,为此,可以使用函数sorted()来获得按特定顺序排列的键列表的副本:

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
for name in sorted(favorite_languages.keys()):print(name.title())

输出结果如下:

Edward
Jen
Phil
Sarah

【5.2.4】方法 values() 遍历字典中的所有值

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'java' ,}
for languages in favorite_languages.values():print(languages.title())

输出结果如下:

Python
C
Ruby
Java

这种做法提取字典中所有的值,而没有考虑是否重复,为剔除重复项,可使用集合(set),集合类似于列表,但每个元素都必须是独一无二的:

favorite_languages = {'jen' : 'python' ,'sarah' : 'c' ,'edward' : 'ruby' ,'phil' : 'python' ,}
for languages in set(favorite_languages.values()):print(languages.title())

输出结果如下:

C
Python
Ruby

【5.3】嵌套

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

【5.3.1】字典列表

下面代码创建三个字典,每个字典都表示一个个学生,将这三个字典都放到一个名为students的列表当中,遍历列表将每个学生都打印出来:

student_0 = {'name' : 'anily' , 'class' : 2}
student_1 = {'name' : 'nikey' , 'class' : 5}
student_2 = {'name' : 'heyk' , 'class' : 3}
students = [student_0 , student_1 , student_2]
for student in students:print(student)

输出结果如下:

{'name': 'anily', 'class': 2}
{'name': 'nikey', 'class': 5}
{'name': 'heyk', 'class': 3}

进阶:使用 range() 自动生成三十个外星人:

#创建一个用于存储外星人的空列表
aliens = []#创建三十个绿色的外星人
for alien_number in range(30):new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'}aliens.append(new_alien)#显示前五个外星人
for alien in aliens[:5]:print(alien)
print("......")#显示创建了多少外星人
print("Total number of aliens: " + str(len(aliens)))

输出结果如下:

{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
......
Total number of aliens: 30

在上述例子中,虽然每个外星人都具有相同特征,但在Python看来,每个外星人都是独立的,我们可以独立地修改每个外星人:

aliens = []
for alien_number in range(30):new_alien = {'color' : 'green' , 'points' : 5 , 'speed' : 'slow'}aliens.append(new_alien)
for alien in aliens[0:3]:if alien['color'] == 'green':alien['color'] = 'yellow'alien['points'] = 10alien['speed'] = 'medium'
for alien in aliens[:5]:print(alien)
print("......")
print("Total number of aliens: " + str(len(aliens)))

输出结果如下:

{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
......
Total number of aliens: 30

【5.3.2】在字典中存储列表

有时候需要将列表储存在字典中,而不是将字典储存在列表中:
例一:

#储存所点比萨的信息
pizza = {'crust' : 'thick' ,'toppings' : ['mushrooms' , 'extra chees'] ,}#概述所点的比萨
print("You ordered a " + pizza['crust'] + "-crust pizza" + "with the following toppings :" )
for topping in pizza['toppings']:print("\t" + topping)

输出结果如下:

You ordered a thick-crust pizzawith the following toppings :mushroomsextra chees

例二:

favorite_languages = {'jen' : ['python' , 'ruby'] ,'sarah' : ['c'] ,'edward' : ['go' , 'ruby'] ,'phil' : ['python' , 'java'] ,}
for name , languages in favorite_languages.items():print("\n" + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())

输出结果如下:


Jen's favorite languages are:PythonRubySarah's favorite languages are:CEdward's favorite languages are:GoRubyPhil's favorite languages are:PythonJava

【5.3.3】在字典中存储字典

users = {'aeinstein' : {'first' : 'albert' ,'last' : 'einstein' ,'location' : 'princeton' ,} ,'mcurie' : {'first' : 'marie' ,'last' : 'curie' ,'location' : 'paris' ,} ,}
for username , user_info in users.items():print("\nUsername : " + username)full_name = user_info['first'] + " " + user_info['last']location = user_info['location']print("\tFull name : " + full_name.title())print("\tlocation : " + location .title())

输出结果如下:


Username : aeinsteinFull name : Albert Einsteinlocation : PrincetonUsername : mcurieFull name : Marie Curielocation : Paris

【5.4】其他方法

【5.4.1】方法 clear() 删除字典内所有元素

dict = {'Name': 'TRHX','Age': 20
}print(len(dict))
dict.clear()
print(len(dict))

输出结果如下:

2
0

【5.4.2】方法 fromkeys() 用于创建一个新字典

基本语法:dict.fromkeys(seq[, value])

fromkeys() 方法用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

seq = ('A', 'B', 'C')dict1 = dict.fromkeys(seq)
print("新字典 dict1 为 : %s" % dict1)dict2 = dict.fromkeys(seq, 10)
print("新字典 dict2 为 : %s" % dict2)

输出结果如下:

新字典 dict1 为 : {'A': None, 'B': None, 'C': None}
新字典 dict2 为 : {'A': 10, 'B': 10, 'C': 10}

注意:fromkeys() 方法只用来创建新字典,不负责保存。当通过一个字典来调用 fromkeys() 方法时,如果需要后续使用一定记得给他复制给其他的变量。

【5.4.3】方法 get() 返回指定键的值

基本语法:dict.get(key, default=None)

get() 方法返回指定键的值,如果值不在字典中则返回默认值。

dict = {'Name': 'TRHX', 'Age': 20}print('Value : %s' % dict.get('Age'))
print('Value : %s' % dict.get('Sex'))
print('Value : %s' % dict.get('Height', 'Unknown'))

输出结果如下:

Value : 20
Value : None
Value : Unknown

【5.4.4】方法 __contains__() 判断键是否存在于字典中

基本语法:__contains__(key)

__contains__(key) 方法用于判断键是否存在于字典中,如果键在字典里返回 true,否则返回 false。在 Python 2.x 的版本中,使用的是 dict.has_key(key) 方法。

dict = {'Name': 'TRHX', 'Age': 20}print('Value : %s' % dict.__contains__('Age'))
print('Value : %s' % dict.__contains__('Sex'))

输出结果如下:

Value : True
Value : False

【5.4.5】方法 setdefault() 为键的值设置默认值。

基本语法:dict.setdefault(key, default=None)

setdefault() 方法和 get() 方法类似,如果字典中包含有给定键,则返回该键对应的值;如果键不存在于字典中,将会添加键并将值设为默认值。

dict = {'Name1': 'T1', 'Name2': 'T2'}print('Value : %s' % dict.setdefault('Name1'))
print('Value : %s' % dict.setdefault('Name2', 'T3'))
print('Value : %s' % dict.setdefault('Name3', 'T3'))
print('Value : %s' % dict.setdefault('Name4'))
print(dict)

输出结果如下:

Value : T1
Value : T2
Value : T3
Value : None
{'Name1': 'T1', 'Name2': 'T2', 'Name3': 'T3', 'Name4': None}

【5.4.6】方法 update() 把一个字典的键值对更新到另一个字典里

基本语法:dict.update(dict2)

update() 方法把一个字典的键值对更新到另一个字典里。

  • 两个字典有相同的键时:会使用新的字典中该 key 对应的 value 值。
  • 有新的键时:会直接把新的字典中的 key、value 加入到原字典中。
dict1 = {'A': '1', 'B': '2'}
dict2 = {'A': '3', 'C': '4'}dict1.update(dict2)
print('Value : %s' % dict1)

输出结果如下:

Value : {'A': '3', 'B': '2', 'C': '4'}

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

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

相关文章

REVERSE-COMPETITION-0xGame2021

REVERSE-COMPETITION-0xGame2021Signin: User FriendlyInstallerOur Compilation StoryPacketRandom ChaosNeverlandRoundaboutDespacitoSecret BaseMazeZero ThreeMirrorThread_TLS茶谈室JunkertownSignin: User Friendly 64位exe,ida打开,在main函数中…

ASP.Net请求处理机制初步探索之旅 - Part 3 管道

开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest()、HttpRuntime.ProcessRequest()以及HttpApplication.Init()。其中,在HttpApplication的Init(…

Python3 基础学习笔记 C06【用户输入和 while 循环】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

PWN-COMPETITION-GeekChallenge2021

PWN-COMPETITION-GeekChallenge2021check in恋爱小游戏ret2xxone恋爱小游戏2.0easyfmteasycanaryret2babypwn777check in 66s内解答200道四则运算的题目即可getshell 参与运算的数和运算符都会打印,直接写脚本即可 # -*- coding:utf-8 -*- from pwn import * cont…

ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计。本篇,我们来看看WebForm模式下的页面生命周期。 (1)Par…

Python3 基础学习笔记 C07【函数】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

REVERSE-COMPETITION-GeekChallenge2021

REVERSE-COMPETITION-GeekChallenge2021Re0刘壮桌面美化大师买ActivityRe1调试珍惜生命new_languageeasypycBrute_forcewin32wasm猜拳have_a_teaRe0 64位exe,ida打开,main函数中没发现什么重要的逻辑 ShiftF12打开字符串窗口,直接找到flag明…

ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init、加载Load以及呈现Render三个重要阶段,其中构造了页面控件树,并对页面控件树进行了大量的递归操作,最后将与模板结合生成的HTML返回给…

Python 3 报错 TypeError: object() takes no parameters【新手必过坑之一】

在学习 Python 3 类的时候,有如下程序: class Dog():def __init__(self,name,age):#初始化属性name和ageself.name nameself.age agedef sit(self):#模拟小狗被命令时蹲下print(self.name.title() " is now sitting.")def roll_over(self)…

REVERSE-PRACTICE-CTFSHOW-6

REVERSE-PRACTICE-CTFSHOW-6真的是签到批量生产的伪劣产品来一个派森snake真的是签到 附件是一个压缩包,解压需要密码,但是题目没有给到解压密码 实际上是压缩包伪加密,将如图橙色处原本的字节0x09改为0x00,保存后即可解压出文件…

Python3 基础学习笔记 C08 【类】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

【考点】 ASP.NET中的控件类型理解。 【出现频率】 ★★★☆☆ 【解答】 ASP.NET的控件包括WEB服务器控件、WEB用户控件、WEB自定义控件、HTML服务器控件和HTML控件。HTML控件、HTML服务器控件和WEB服务器控件之间的区别如下所示。 q HTML控件:这完全是浏览器端…

Python3 基础学习笔记 C09【文件和异常】

CSDN 课程推荐:《8小时Python零基础轻松入门》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实…

REVERSE-PRACTICE-CTFSHOW-7

REVERSE-PRACTICE-CTFSHOW-7签层饼Tea_tube_poteasy贪吃蛇的秘密签层饼 32位exe,ida打开 main函数中,输入两个大于0的数字,如果flag_num为0,则将两个输入作为flag的一部分,打印flag 选中input_1按x查找交叉引用&…

HttpModule与HttpHandler详解(转)

ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道&am…

Windows 系统中 Python下 Pygame 的安装

Pygame是跨平台Python模块,专为电子游戏设计,可用于管理图形、动画乃至声音,建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚,通过使用Pygame来处理在屏幕上绘…

REVERSE-PRACTICE-CTFSHOW-8

REVERSE-PRACTICE-CTFSHOW-8Matara OkinaanniuwarmupeMatara Okina apk文件,jadx-gui打开 MainActivity什么都没有,来到FlagActivity scheme,host这些看不懂 第44行有个ans和bytes的比较,ans已知,bytes是从某个地方获…

Html控件和Web控件(转)

作为一名ASP.NET的初学者,了解并且区别一些混淆概念是很必须的,今天这篇博文 就是主要向大家介绍一下Html控件和Web控件。在ASP.net中,用户界面控件主要就是 Html控件和Web控件,在前台页面上看,两种控件非常相似&…

VMware Pro 14 安装 Ubuntu 18.04 详细教程

目录● 安装步骤1.下载安装 VMware Workstation Pro 142.下载 Ubuntu 18.04 系统3.在 VMware 中创建虚拟机4.在虚拟机上安装 Ubuntu 系统● 安装过程中可能会出现的一些问题 1.在虚拟机上安装 Ubuntu 系统的过程中卡死不动 2.Ubuntu 不能全屏显示● 安装步骤 1.下载安装 VMware…

C语言实现TEA系列加解密算法

C语言实现TEA系列加解密算法TEA加解密XTEA加解密XXTEA加解密TEA加解密 #include <stdio.h> #include <stdint.h>//加密函数 void encrypt(uint32_t* v, uint32_t* k) {uint32_t v0 v[0], v1 v[1], sum 0, i;uint32_t delta 0x9e3779b9;uint32_t k0 k[0], k1 …