Python中字典用法完全解读 !

作者: 14e61d025165 | 来源:发表于2019-04-13 15:22 被阅读3次

在本文中,你将学习能够将相关信息关联起来的Python字典。学习如何访问和修改字典中的信息,鉴于字典可储存的信息量几乎不受限制,因此我们会演示如何遍历字典中的数据。另外,还将学习储存字典的列表,储存列表的子弟和储存字典的字典。

理解字典后,你就能更准确地为各种真实物体建模。

一个简单的字典

alien.py

alien_0 = {'color':'gereen','points':5}
print (alien_0['color'])
print (alien_0['points'])
gereen
5

使用字典

在Python中,字典是一系列键值对.每个键都与一个值相关联,你可以使用键来访问与之关联的值.与键相关联的值可以实数字,字符串,列表,乃至字典。

{% note danger %}

字典用放在花括号 {} 中的一系列键值对表示. 键值对有两个相关联的值. 键和值之间用冒号分隔,而键值对之间之间用逗号分隔。
Python学习群:683380553,有大牛答疑,有资源共享!有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。
{% endnote %}

访问字典中的值

要获取与键相关联的值,可依次制定字典名和放在方括号内的键
alien_0 {'color':'green'}
print (alien_0['color'])
green
alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print ('you just earned ' + str(new_points) + " points!")
you just earned 5 points!

添加键值对

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

alien_0 = {'color':'green','points':5}
print (alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print (alien_0)
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

先创建一个空字典

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

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
alien_0['x_postion'] = 0
alien_0['y_postion'] = 25
print (alien_0)
{'color': 'green', 'points': 5, 'x_postion': 0, 'y_postion': 25}

修改字典中的值

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

alien_0 = {'color':'green'}
print ('the alien is ' + alien_0['color'] + '.')
alien_0['color'] = 'yellow'
print ('the alien is now ' + alien_0['color'] + '.')
删除键值对

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

alien_0 = {'color':'green','points':5}
print (alien_0)
del alien_0['points']
print (alien_0)
由类似对象组成的字典

前面的例子中,字典储存的是一个对象,你可以使用字典来储存众多对象的同一种信息

favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
print ('sarah is favorite language is ' + favorite_languages['sarah'].title() + '.')
练习测试

人:使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name、last_name、age和city。将存储在该字典中的每项信息都打印出来。
喜欢的数字:使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
词汇表:Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
练习结果

pepole.py
f = {'first_name':'yang','last_name':'wei','age':'32','city':'beijing'}
fname = f['first_name']
lname = f['last_name']
age = f['age']
city = f['city']
print('\n'+ fname + '\n' + lname + '\n' + age + '\n' + city)
likenum.py
ln = {'name1':'1','name2':'2','name3':'3','name4':'4','name5':'5'}
print ( 'name1 do u like ? ' + ln['name1'])
print ( 'name2 do u like ? ' + ln['name2'])
print ( 'name3 do u like ? ' + ln['name3'])
print ( 'name4 do u like ? ' + ln['name4'])
print ( 'name5 do u like ? ' + ln['name5'])
word.py
word = {'print':'print.is.word...','len':'sum is list is long'}
print ('print = : ' + word['print'])
print ('len = : ' + word['len'])
遍历字典

一个Python字典可能只包含几个键值对,也可能包含数百万个键值对.鉴于字典可能包含大量的数据,Python支持对字典的遍历。

遍历所有的键值对

user_0 = {
'username':'efermi',
'first':'enrico',
'last':'fermi',
}
for key,value in user_0.items():
print ('\nKey: ' + key)
print ('Value' + vale)
{% note danger %}

items() 方法, 他返回一个键值对的列表

{% endnote %}

for k,v in 列表.items(): 对于字典的for循环,可声明两个变量用于储存键值对中的键和值.接下来用包含字典名和方法items(),它返回一个键值对列表.接下来for循环依次将每个键值对储存到指定的两个变量中.
favorite_languages.py

favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for name , language in favorite_languages.items():
print (name.title() + "'s favorite language is " + language.title() + '.')
遍历字典中所有的键

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

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

keys() 方法. 用于遍历字典中的所有键

{% endnote %}

遍历字典中所有的值

如果提取字典中所包含的值 , 可以使用方法values()

favorite_languages = {
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python',
}
for language in favorite_languages.values():
print (language.title())
{% note danger %}

value() 方法. 用于遍历字典中的所有值

{% endnote %}

练习测试

词汇表2:既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码,将其中的一系列print语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile':'egypt'。
使用循环为每条河流打印一条消息,如“TheNilerunsthroughEgypt.”
使用循环将该字典中每条河流的名字都打印出来。
使用循环将该字典包含的每个国家的名字都打印出来。
调查:在6.3.1节编写的程序favorite_languages.py中执行以下操作。
创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
练习结果

word.py
word = {
'print':'print.is.word...',
'len':'sum is list is long'
}
for k,v in word.items():
print (k + ':' + v)
rever.py
rever = {
'china':'huanghe',
'china':'changjiang',
'meiguo':'buzhidao',
'nile':'egypt',
}
for c,r in rever.items():
print ('the '+ c + 'runs through '+ r + '.')
for r in rever.values():
print (r)
for c in rever.keys():
print (c)
favorite_languages.py
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
pepole = ['jen','sarah']
for i in pepole:
if i in favorite_languages.keys():
print ('thank ' ,i)
嵌套

有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称之为嵌套

字典列表

字典alien_0包含一个外星人的全部信息,但无法储存第二个外星人的信息,那么如何管理城区阶段的外星人呢,一种办法是创建一个外星人列表,其中每个外星人都是一个字典,包含该外星人的各种信息,下面的代码创建一个包含三个外星人的列表

aliens.py

alien_0 = {'color':'green','points':5}
alien_1 = {'color':'yellow','points':10}
alien_2 = {'color':'red','points':15}
aliens = [alien_0,alien_1,alien_2]
for i in aliens:
print (i)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
下面使用range()函数生成30个外星人:

aliens = []
for i in range(30):
new = {'color':'green','points':5,'speed':'slow'}
aliens.append(new)
print(aliens)
for alien in aliens[:5]:
print(alien)
print('...')
print ('sum = ' + 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'}
...
在字典中储存列表

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

pizza.py

pizza = {
'crust':'thick',
'toppings':['mushrooms','extra cheese'],
}
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 pizza with the following toppings:
mushrooms
extra cheese
练习测试

人:在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
宠物:创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
喜欢的地方:创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
喜欢的数字:修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
城市:创建一个名为cities的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含country、population和fact等键。将每座城市的名字以及有关它们的信息都打印出来。
扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格式。
练习结果

people.py
people = []
people_1 = {'name':'user1','sex':'F'}
people_2 = {'name':'user2','sex':'M'}
people_3 = {'name':'user3','sex':'F'}
people = [people_1,people_2,people_3]
for i in people:
print(i)
pet.py
pet_1 = {'pet':'pet1','master':'user1'}
pet_2 = {'pet':'pet2','master':'user2'}
pet_3 = {'pet':'pet3','master':'user3'}
pets = [pet_1,pet_2,pet_3]
for d in pets:
print (d['pet'])
like.py
favorite_places = {
'name1':['like1','like2','like3'],
'name2':['like4','like5','like6'],
'name3':['like7','like8','like9'],
}
for name,like in favorite_places.items():
print('\n' + name + ' like this ')
for i in like:
print ('\t\t'+i)
likenum.py
favorite_places = {
'name1':['like1','like2','like3'],
'name2':['like4','like5','like6'],
'name3':['like7','like8','like9'],
}
for name,like in favorite_places.items():
print('\n' + name + ' like this ')
for i in like:
print ('\t\t'+i)
city.py
cities = {
'beijing':{'city':'beijing','renkou':'100'},
'chongqing':{'city':'chongqing','renkou':'200'},
'shanghai':{'city':'shanghai','renkou':'200'},
}
for x,y in cities.items():
for i,ii in y.items():
print ('chengshi: ' + str(x) +' city: ' + i + ' renkuo: ' + ii )

相关文章

网友评论

    本文标题:Python中字典用法完全解读 !

    本文链接:https://www.haomeiwen.com/subject/yzzlwqtx.html