三周之内必须拿下Python这一块!之基础部分第6章字典

tech2024-12-21  1

源码

文章目录

Chapter 6 字典6.1 简单的字典6.2使用字典6.2.1访问字典中的值6.2.2添加 键值对6.2.3创建空字典6.2.4修改字典的值6.2.5 del 删除键值对6.2.6由对象组成的字典 6.3 遍历字典6.3.1遍历所有的键值对6.3.2遍历所有的键6.3.3 顺序遍历 键6.3.3 遍历 值练习题 6.4 嵌套6.4.1 字典列表6.6.2字典中存储列表6.6.3 在字典中嵌套字典6.4总结 6.5 小结

Chapter 6 字典

in this section 你将学习能够将相关信息关联起来的字典,接着会学习访问和修改字典的信息,以及如何遍历字典,和一些嵌套

6.1 简单的字典

alien_0={"color":"green","points":5} print(alien_0["color"]) print(alien_0["points"]) #green 5

6.2使用字典

字典是一系列的键值对,每一个键都有对应值.之间用逗号分隔",";并放在花括号内

alien={"color":"green","points":5}

你可以存储任意个键值对

6.2.1访问字典中的值

print(alien_0["color"]) print(alien_0["points"]) #字典名["键"]

6.2.2添加 键值对

字典是一种动态结构,可随时在其中添加键—值对。

alien_0["postion_x"]=0 alien_0["postion_y"]=25 print(alien_0)

python不关心键值对的添加顺序,只是关心他们之间的关系,我们应该学习python这一点

6.2.3创建空字典

alien_0={} alien_0["color"]="green" alien_0["points"]=5

通常都需要先定义一个空字典

6.2.4修改字典的值

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

alien_1["color"]="black" print(alien_1["color"])

下面是一个改变x位置的实例

alien={"x_postion":0,"y_postion":25,"speed":"mid"} print(alien) if alien["speed"]=="slow": x_cur=1 elif alien["speed"]=="mid": x_cur=2 else:#fast x_cur=3 alien["x_postion"]=x_cur+alien["x_postion"] print(alien)

首先定义初始字典,(x,y)的值(0,25),speed=mid

if判断他的速度从而改变不同的x值

最后11行将alien[“x”]的值更新为初始+当前值

如此当我们循环运行这段代码,这个数值会越来越大

6.2.5 del 删除键值对

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

del alien_1["color"] print(alien_1)

删除的键值对永远消失

6.2.6由对象组成的字典

在之前的例子中都是使用一个字典存储与其相关的一些属性,比如alien的颜色,得分

你也可以存储众多对象的形同属性

favorite_language={ "jane":"python", "jane":"python", "leo":"c", "phil":"java" }

利用缩进让代码可读,(放在一行很丑的)之间要用逗号分隔

print("leo's favorite_language is "+favorite_language["leo"]) #c

6.3 遍历字典

之前例子都是单个指定的去调用字典,一个字典可能包含几百万个键值对.所以本节我们将学习如何去遍历字典

6.3.1遍历所有的键值对

当然是使用for in

user={ "username":"leoqlone", "first_name":"leo", "last_name":"qlone" } for key,value in user.items(): print("\nkey:"+key) print("value:"+value)

要利用for in遍历字典,需要定义2个变量临时保存键 和 值

第二部分包含 “字典名.items()” 方法,他返回1个键值,接下来for in 将每个键值存储到指定的变量里

接着我们可以任意使用变量来代替指定的键值对

python不关系键值的顺序,只是关心他们之间的relationship

对于两个key value变量的命名尽可能遵循zen of python的规则,阐明变量和简直之间的关系,例如之前的实例language中,就可以使用name和language而不是k,v

6.3.2遍历所有的键

在不需要键值对中的值时,方法keys()很有用//key的意思时关键,键

user={ "username":"leoqlone", "first_name":"leo", "last_name":"qlone" } #for name in user:等价的,但是后者更清晰 for name in user.keys(): print(name) # username first_name last_name

遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的fornameinfavoritelanguages.keys():替换为fornameinfavorite_languages:,输出将不变

favorite_language={ "jane":"python", "leo":"c", "phil":"java" } friends=["leo","jane"] for name in favorite_language: print(name.title()) if name in friends: print("hi "+name.title()+" i see you favorite language is "+ favorite_language[name]+"\n")

方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键,因此 处的代码行只是核实’erin’是否包含在这个列表中

if "erin" not in favorite_languages.keys(): ​ print

6.3.3 顺序遍历 键

还记得sorted()吗,暂时对列表排序

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

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

favorite_language={ "zane":"python", "leo":"c", "phil":"java" } for name in sorted(favorite_language.keys()): print(name.title()+", thank you for taking the poll.")

排序的顺序按照a~z字典序

6.3.3 遍历 值

如果你感兴趣的主要是字典包含的值,可使用方法values(),它返回一个值列表

favorite_language={ "zane":"python", "leo":"c", "phil":"java" } for language in favorite_language.values(): print(language.title())

值不是唯一的,因此会有重复,所以可以使用set()

for language in set(favorite_language.values()): print(language)

set返回一个不重复的列表

练习题

遍历

遍历所有的键值对 for k,v in dict.items(): 遍历所有的键 for k in dict.keys(): 遍历所有的值 for v in dict.values(): 值去重 for v in set(dict.values()):

6.4 嵌套

将字典存储在列表,或将列表作为值存储在字典,这叫做嵌套

6.4.1 字典列表

alien_0={"color":"green","points":5} alien_1={"color":"green","points":5} alien_2={"color":"green","points":5} #创建3个字典每一个字典表示一个外星人 aliens=[alien_0,alien_1,alien_2] #把之前创建的3给字典作为列表参,放进aliens列表里 for alien in aliens: print(alien) #遍历输出

但是跟符合实际情况的是循环创建 range()

aliens=[] #空列表,以便后续追加 #30次循环 追加aliens里面 for alien in range(30): new_alien={"color":"green","points":5} aliens.append(new_alien) 3输出前5个 for alien in alien: print(alien) print("...") print("total number of aliens:"+str(len(aliens)))

修改特定的外星人

for alien in aliens[0:3]: #约定了前三个 #特判与修改 if alien["color"]=="green": alien["color"]="yellow" alien["points"]=10 alien["speed"]="fast"

因为字典的结构存在相同,所以利用循环来操作会很方便,字典与列表的结合,列表是大体,之中包含着字典,就行多维数组,第一个维度决定了顺序高度,第二个维度是他内部的东西

多个字典存放在列表里

6.6.2字典中存储列表

列表存储在字典中,而不是将字典存储在列表中.是为了字典里有多个值,而单纯的使用列表,只能存储要添加的比萨配料;信息不聚合

pizza={#创建一个披萨列表里面存放披萨的配料 "crust":"thick",#内容 "topping":["mushroom","cheese"]#上面的配料,只有使用列表并且放在字典最合适 } #输出披萨的信息,只输出了头 print("you ordered a "+pizza['crust']+"crust pizza"+ "with the following topping:") #接着输出字典里topping列表的所以配料 for top in pizza["topping"]: print("\t"+top)

每当键值对的关系不是唯一时,在字典里的值里存放列表存储;也就嵌套

对于字典{列表[…]}进行遍历用for循环即可

favorite_language={ "jane":["python","c"], "leo":["c","java"], "phil":["java","ruby"] } for k,v in favorite_language.items(): print("\n"+k+"'s favorite_language are:") for i in v: print("\t"+i)

6.6.3 在字典中嵌套字典

但这样做时,代码可能很快复杂起来,接下来看一个列子

users是一个字典包含了所有用户

​ a又是一个字典,之中包含了更多的信息,姓名等

​ b

综上就是字典嵌套字典

users = { 'aeinstein': { 'first': 'albert', 'last': 'einstein', 'location': 'princeton', }, 'mcurie': { 'first': 'marie', 'last': 'curie', 'location': 'paris', }, 'leoqlone':{ 'first': 'leo', 'last': 'qlone', 'location': 'China' }} for username,userinfo in users.items(): print("\nUsersname: "+username) full_name=userinfo['first']+userinfo['last'] loc=userinfo["location"] print("\tFull name: "+full_name.title()) print("\tLoction: "+loc.title())

这程序的目的时输出users里所有的用户,全名以及位置

程序的结构是

大字典users存放所有的用户

​ 用户:每一个用户又是字典,里面存放的信息类型不同不能用列表,但他们有相同的键

6.4总结

字典列表 a[ x{i:j}, y{i:j}, z{i:j} ] 将字典存放在列表里,管理成群结队的外星人 单个字典仅仅存放单个外星人的信息,多个字典可以放在列表里 字典中存储列表 a{ 1:[x,y,z], 2:[x,y,z], 3:[x,y,z] } 每一个字典由键值对组成 x:y,这样x仅仅对应1个y出现x要求对应多个y时就需要在y里放一个列表 #x是键 x:[#[]括号内是由值组成的列表 y1:y2, y1:y2, y1:y2 ]#这个方括号是值的列表 字典中存储字典 a{ x{i:j,}, y{i:j,}, z{i:j,} }

6.5 小结

在本章中,你学习了:如何定义字典,以及如何使用存储在字典中的信息;如何访问和修改 字典中的元素,以及如何遍历字典中的所有信息;如何遍历字典中所有的键值对、所有的键和 所有的值;如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。 在下一章中,你将学习 while 循环以及如何从用户那里获取输入。这是激动人心的一章,让 你知道如何将程序变成交互性的——能够对用户输入作出响应。

最新回复(0)