对应书目:Python编程:从入门到实践
字典(第六章)
要理解新的编程概念,最佳的方法是尝试在程序中使用它们
- 在 Python 中,字典是一系列键—值对。
- 在 Python 中,字典用放在花括号 {} 中的一系列键—值对表示
- del 字典名[键]
动手试一试
6-1 人:使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键 first_name、 last_name、 age 和 city。将存储在该字典中的每项信息都打印出来
people = {
'first_name':'aa',
'last_name':'bb',
'age':18,
'city':'beijing'
}
print(people['first_name'].title()+people['last_name']+" age:"+str(people['age'])+" from:"+people['city'])
6-2 喜欢的数字:使用一个字典来存储一些人喜欢的数字。请想出 5 个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的
favorite = {'a':'3','b':'5','c':'9','d':'27','e':'78'}
print("a's favorite number is " + favorite['a'])
print("b's favorite number is " + favorite['b'])
print("c's favorite number is " + favorite['c'])
print("d's favorite number is " + favorite['d'])
print("e's favorite number is " + favorite['e'])
6-3 词汇表: Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表
想出你在前面学过的 5 个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中
以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符( \n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义
words = {'programming':'Chinese abbreviation for programming',
'python':'Is an interpretive, object - oriented, dynamic data - type high - level programming language',
}
print("programming is " + words['programming'])
print("python is " + words['python'])
- .items(),它返回一个键值—对列表
- 注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。 Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系
- 在不需要使用字典中的值时,方法 .keys() 很有用,返回一个列表,列表包含字典中所有的键,如果不写 .keys(),其结果和有 .keys() 一样,因为遍历字典时,会默认遍历所有的键
- 对字典排序 sorted(字典.keys())
- .value() 提取字典中所有的值,但没有考虑是否重复,为剔除重复项,可以使用 set(字典.values())
动手试一试
6-4 词汇表 2:既然你知道了如何遍历字典,现在请整理你为完成练习 6-3 而编写的代码,将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加 5 个 Python 术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中
words = {'programming':'Chinese abbreviation for programming',
'python':'Is an interpretive, object - oriented, dynamic data - type high - level programming language',
}
for key,value in words.items():
print(key + " is " + value)
6-5 河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt'
使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”
使用循环将该字典中每条河流的名字都打印出来
使用循环将该字典包含的每个国家的名字都打印出来
rivers = {'Yellow River' : 'China',
'nile' : 'egypt',
'Yangtze river' : 'China'
}
for key,value in rivers.items():
print("The "+ key + " runs though " + value)
6-6 调查:在 6.3.1 节编写的程序 favorite_languages.py 中执行以下操作
创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中
遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查
favorite_languages = {'jen':'python',
'sarsh':'c',
'edward':'ruby',
'phil':'python'}
for name,language in favorite_languages.items():
print(name.title() + "is favorite_language is " + language.title() + ".")
if 'tom' not in favorite_languages.keys():
print("where are you! " + "tom".title())
动手试一试
6-7 人:在为完成练习 6-1 而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为 people 的列表中。遍历这个列表,将其中每个人的所有信息都打印出来
people = {
'people1' : {
'first_name':'aa',
'last_name':'bb',
'age':18,
'city':'beijing'
},
'people2' : {
'first_name': 'cc',
'last_name': 'dd',
'age': 78,
'city': 'shanghai'
},
'people3' : {
'first_name': 'ee',
'last_name': 'ff',
'age': 37,
'city': 'guangzhou'
},
}
for username,user_info in people.items():
print("name " + username)
message = user_info['first_name']+" "+user_info['last_name']+" "+str(user_info['age'])+" "+user_info['city']
print(message)
6-8 宠物:创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将宠物的所有信息都打印出来
pets = {
'tom' : {
'first_name':'aa',
'last_name':'bb',
'age':18,
'city':'beijing'
},
'jerry' : {
'first_name': 'cc',
'last_name': 'dd',
'age': 78,
'city': 'shanghai'
},
}
for username,user_infos in pets.items():
print("name " + username)
for user_info in user_infos.values():
print(user_info)
6-9 喜欢的地方:创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的 1~3 个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来
favorite_places = {
'tom' : {
'city':'beijing',
'city1':'shanghai'
},
'jerry' : {
'city':'yunnan',
'city1':'xiamen',
'city2':'guangxi'
},
}
for username,user_infos in favorite_places.items():
print("name " + username)
for user_info in user_infos.values():
print(user_info)
6-10 喜欢的数字:修改为完成练习 6-2 而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来
favorite_nums = {
'tom' : {
'num':'313',
'num1':'231'
},
'jerry' : {
'num':'44',
'num1':'2',
'num2':'324',
'num3':'890'
},
}
for username,user_infos in favorite_nums.items():
print("name " + username)
for user_info in user_infos.values():
print(user_info)
6-11 城市:创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含 country、 population 和 fact 等键。将每座城市的名字以及有关它们的信息都打印出来
cities = {
'shanghai' : {
'country':'China',
'population':'78271',
'fact':'beautiful'
},
'xiamen' : {
'country':'China',
'population':'7432423',
'fact':'beautiful!'
},
}
for username,user_infos in cities.items():
print("name " + username)
for user_info in user_infos.values():
print(user_info)
6-12 扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格式
更多推荐
Python编程:从入门到实践——字典(第六章+课后答案)
发布评论