第六章—字典
6-1 人 :使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name 、last_name 、age 和city 。将存储在该字典中 的每项信息都打印出来。
1 messages={'first_name':'peter','last_name':'Smith','age':25,'city':'Beijing'} 2 print(messages['first_name']) 3 print(messages['last_name']) 4 print(messages['age']) 5 print(messages['city'])
6 print(messages)
输出:
1 peter 2 Smith 3 25 4 Beijing
5 {'first_name': 'peter', 'last_name': 'Smith', 'age': 25, 'city': 'Beijing'}
6-2 喜欢的数字 :使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
1 messages={'ada':1,'ava':2,'Peter':3,'Marry':'4','Mark':5} 2 print(messages)
输出:
1 {'ada': 1, 'ava': 2, 'Peter': 3, 'Marry': '4', 'Mark': 5}
6-3 词汇表 :Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n )插 入一个空行,然后在下一行以缩进的方式打印词汇的含义。
1 messages={ 2 'first_name':'peter', 3 'last_name':'Smith', 4 'age':25, 5 'city':'Beijing'} 6 for key,value in messages.items(): 7 print(key,':',value)#注意此句用法
输出:
1 first_name : peter 2 last_name : Smith 3 age : 25 4 city : Beijing
6-4 词汇表2 :既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码,将其中的一系列print 语句替换为一个遍历字典中的键和值的循环。确定该 循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
程序同6-3
6-5 河流 :创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt' 。
使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
使用循环将该字典中每条河流的名字都打印出来。
使用循环将该字典包含的每个国家的名字都打印出来。
1 message={ 2 'nile':'egypt', 3 'huanghe':'China', 4 'changjiang':'China' 5 } 6 for river in message.keys(): 7 print(river) 8 for country in message.values(): 9 print(country) 10 for river,country in message.items():# .items()表示键和值的统称
输出:
1 nile 2 huanghe 3 changjiang 4 egypt 5 China 6 China 7 The nile runs through egypt 8 The huanghe runs through China 9 The changjiang runs through China
6-6 调查 :在6.3.1节编写的程序favorite_languages.py中执行以下操作。
创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
1 favorite_languages={ 2 'Jen':'pyhton', 3 'sarah':'c', 4 'edward':'ruby', 5 'phil':'python' 6 } 7 names1={'Jen','phil','ada'} 8 for name in favorite_languages.keys(): 9 if name in names1: 10 print('Hi '+name+', thank you .') 11 else: 12 print("Hi "+name+', would you like to attend this research.')
输出;
1 Hi Jen, thank you . 2 Hi sarah, would you like to attend this research. 3 Hi edward, would you like to attend this research. 4 Hi phil, thank you .
6-7 人 :在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people 的列表中。遍历这个列表,将其中每个人的所有 信息都打印出来。
1 message1={'first_name':'peter','last_name':'Smith','age':25,'city':'Beijing'} 2 message2={'first_name':'ada','last_name':'bbc','age':23,'city':'Tianjin'} 3 message3={'first_name':'ava','last_name':'aac','age':21,'city':'Hunan'} 4 messages=[message1,message2,message3] 5 for message in messages: 6 print(message)
输出:
1 {'first_name': 'peter', 'last_name': 'Smith', 'age': 25, 'city': 'Beijing'} 2 {'first_name': 'ada', 'last_name': 'bbc', 'age': 23, 'city': 'Tianjin'} 3 {'first_name': 'ava', 'last_name': 'aac', 'age': 21, 'city': 'Hunan'}
6-8 宠物 :创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets 的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
1 #*****创建多字典存入一个列表中打印所有字典***# 2 pet1={ 3 'type':'dog', 'ower':'peter'} 4 pet2={ 5 'type':'cat','ower':'lili'} 6 pet3={ 7 'type':'rabbit','ower':'heli'} #建立字典使用花括号 8 pets=[pet1,pet2,pet3] #将多个字典存放入一个列表中时是中括号 9 for pet in pets: 10 print(pet) #打印所有的字典
输出:
1 {'type': 'dog', 'ower': 'peter'} 2 {'type': 'cat', 'ower': 'lili'} 3 {'type': 'rabbit', 'ower': 'heli'}
6-9 喜欢的地方 :创建一个名为favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练 习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
1 #*******字典键值中值含有多个元素******# 2 favorate_place={ 3 'peter':['a','b','c'], 4 'lili':['c','d','e'], 5 'helo':['f','g','h'] 6 } 7 for name,places in favorate_place.items(): 8 print("\n"+name)#换行 9 print(places)#注意这句与下面两句的区别,此句打印出来有中括号 10 for place in places: 11 print("\t"+place)#"\t"空格,这种打印出来没有中括号,并且自动换行
输出:
1 peter 2 ['a', 'b', 'c'] 3 a 4 b 5 c 6 7 lili 8 ['c', 'd', 'e'] 9 c 10 d 11 e 12 13 helo 14 ['f', 'g', 'h'] 15 f 16 g 17 h
6-10 喜欢的数字 :修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
原理同6-9
6-11 城市 :创建一个名为cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该 城市的事实。在表示每座城市的字典中,应包含country 、population 和fact 等键。将每座城市的名字以及有关它们的信息都打印出来。
1 #***字典中创建字典****# 2 cities={ 3 "Beijing":{ 4 'country':'China', 5 'population':'13', 6 'fact':'a' 7 }, 8 "Haerbin":{ 9 'country':'China', 10 'population':'13', 11 'fact':'b' 12 }, 13 "Changsha":{ 14 'country':'China', 15 'population':'13', 16 'fact':'b' 17 } 18 } 19 for city,infos in cities.items(): 20 print(city) 21 print(infos)
输出:
1 Beijing 2 {'country': 'China', 'population': '13', 'fact': 'a'} 3 Haerbin 4 {'country': 'China', 'population': '13', 'fact': 'b'} 5 Changsha 6 {'country': 'China', 'population': '13', 'fact': 'b'}