"""练习6-1 人
使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。
该字典应包含键first_name、last_name、age和city。将存储在该字典中的每项信息都打印出来"""
dict1 = {'first_name': 'chen', # 姓
'last_name': 'si yuan', # 名
'age': 14, # 年龄
'city': 'china'} # 居住的城市
print('每项信息都打印出来:')
for key, value in dict1.items():
print(key, ':',value) # 打印全部键值对
"""练习6-2 喜欢的数
使用一个字典来存储一些人们喜欢的数。请想出5个人的名字,
并将这些名字用作字典中的键;想出每个人喜欢的一个数,
并将这些数作为值存储在字典中。打印每个人的名字和喜欢的数。
为让这个程序更有趣,通过询问朋友确保数据是真实的。"""
dict1 = {'chen_fei': 43,
'hui_lin': 35,
'si_yuan': 14,
'si_yu': 5,
'xiao_ming':3}
for key, value in dict1.items(): # 遍历字典键值
print(key,"喜欢的数字是" ':',value) # 打印全部键值对
"""练习6-3 词汇表
Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
1.想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
2.以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,
再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义。"""
python_words = {'int':'不带点的数字','float':'带点的数字','str':'引号引起来的','list':'中括号扩起来的','dict':'大括号扩起来的'}
int1 = '整数'
float1 = '浮点数'
str1 = '字符串'
list1 = '列表'
dict1 = '字典'
print("\n" +int1 + "是: " + python_words['int'])
print("\n" +float1 + "是: " + python_words['float'])
print("\n" +str1 + "是: " + python_words['str'])
print("\n" +list1 + "是: " + python_words['list'])
print("\n" +dict1 + "是: " + python_words['dict'])
"""练习6-4 词汇表2
现在你知道了如何遍历字典,请整理你为完成练习6.3而编写的代码,
将其中的一系列print语句替换为一个遍历字典中键和值的循环
。确定该循环正确无误后,再在词汇表中添加5个Python术语。
当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。"""
python_words = {'int':'不带点的数字'
,'float':'带点的数字'
,'str':'引号引起来的'
,'list':'中括号扩起来的'
,'dict':'大括号扩起来的'
,'tuple':'小括号扩起来的'
,'type' :'查看数据类型'
,'bool':'真,假'
,'in':'在'
,'not':'不在'}
for key, value in python_words.items(): # 遍历字典键值
print(key,"是" ':',value) # 打印全部键值对
"""练习6-5 河流
河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键-值对可能是'nile': 'egypt'。
1.使用循环为每条河流打印一条消息,如The Nile runs through Egypt。
2.使用循环将该字典中每条河流的名字都打印出来。
3.使用循环将该字典包含的每个国家的名字都打印出来。"""
river = {'chiana':'长江','english':'泰晤士河','usa':'密西西比河'}
# 1
for key,name in river.items(): # 取键和值
print(f'The {key.title()} runs through {name}') # 格式化输出
# 2
for key in river.values(): # 取值
print(key) # 打印
# 3
for key in river.keys(): # 取键
print(key.title()) # 打印每一个键,并首字母大写
"""练习6-6 调查
1.创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
2.遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。"""
# 原始名单
names = {'小红':16,'大王':34,"小王":20,'小牛':18,'小白':19}
# 1.应该会接受调查的人员名单
examine_name = {'小黑':17,'小红':21,'小路':13,'大王':48,'老牛':57}
# 2.遍历人员名单
for key in examine_name: # 遍历应该会接受调查字典
if key in names.keys(): # 如果应该会接受调查在原始名单字典里面
print(f'谢谢参与{key}') # 打印 谢谢参与
else: # 反之如果不在
print(f'请你参与调查:{key}') # 打印 请你参加
"""练习6-7 人
在为完成练习6.1而编写的程序中,再创建两个表示人的字典,
然后将这三个字典都存储在一个名为people的列表中。
遍历这个列表,将其中每个人的所有信息都打印出来。"""
people = [] # 定义存储字典的列表
# 字典1
dict1 = {'first_name':'chen',
'last_name':'si yuan',
'age':14,
'city':'china'}
people.append(dict1) # 将字典添加的列表
# 字典2
dict2 = {'first_name':'chen',
'last_name':'si yu',
'age':5,
'city':'china'}
people.append(dict2) # 将字典添加的列表
# 字典3
dict3 = {'first_name':'chen',
'last_name':'fei',
'age':44,
'city':'china'}
people.append(dict3) # 将字典添加的列表
print(people) # 打印列表
for person in people: # 遍历这个列表,将其中每个人的所有信息都打印出来
name = person['first_name'].title() + " " + person['last_name'].title()
age = str(person['age'])
city = person['city'].title()
print(name + ", of " + city + ", is " + age + " years old.")
"""练习6-8 宠物
创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;
在每个字典中,包含宠物的类型及其主人的名字。
将这些字典存储在一个名为pets的列表中,再遍历该列表,并将有关每个宠物的所有信息都打印出来。"""
pets = [] # 创建一个用于存储宠物的空列表。
# 宠物1
pet = { # 定义字典储存宠物物信息
'宠物': '狗',
'名字': '旺财',
'主人': '思远',
'年龄': 8,
'体重': '20kg',}
pets.append(pet) # 把字典添加的列表储存
# 宠物2
pet = { # 定义字典储存宠物信息
'宠物': '猫',
'名字': '汤姆',
'主人': '思妤',
'年龄': 3,
'体重': '5kg',}
pets.append(pet) # 把字典添加的列表储存
# 打印宠物的所有信息
for pet in pets: # 遍历列表
print(f"\n宠物{pet['名字']}所有信息:") # 打印所以信息
for key, value in pet.items(): # 嵌套取值的键值对
print(f"\t{key}: {value}") # 打印出取值的键值对并首行缩进
"""练习6-9 喜欢的地方
创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;
对于其中的每个人,都存储他喜欢的1-3个地方。为让这个练习更有趣些,
让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。。"""
favorite_places = { '思远': ['印度', '德国', '俄罗斯'],
'思妤': ['美国', '英国'],
'慧林': ['新加坡', '泰国', '瑞士']}
for name, places in favorite_places.items(): # 遍历键和值
print(f"\n{name} 喜欢以下地方:") # 打印
for place in places: # 嵌套临时变量在值里面循环取值
print(f"- {place}") # 打印值
"""练习6-10 喜欢的数
修改为完成练习6-2而编写的程序,
让每个人都可以有多个喜欢的数,然后将每个人的名字及其喜欢的数打印出来。"""
dict1 = {'chen_fei': [43,18,8],
'hui_lin': [35,18,22,28],
'si_yuan': [14,3,6,10],
'si_yu': [5,2,3,4],
'xiao_ming':[3,6]}
for key, value in dict1.items(): # 遍历字典键值
print(f"\n{key}喜欢的数字是:" ) # 打印
for a in value: # 嵌套临时变量在值里面循环取值
print(f"- {a}") # 打印值
"""练习6-11 城市
创建一个名为cities的字典,在其中将三个城市名用作键;
对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。
在表示每座城市的字典中,应包含country、population和fact等键。将每座城市的名字以及有关它们的信息都打印出来。"""
# 字典套字典
cities = {'北京': { '国家': 'china','人口': 25000000,'地标': '天安门',},
'纽约': {'国家': 'usa','人口': 8000000,'地标': '自由女神',},
'伦敦': { '国家': 'english','人口': 9000000,'地标': '伦敦桥',}}
for city, city_info in cities.items(): # 遍历字典键和值
country = city_info['国家'] # 把值里面的国家这个键赋值给country
population = city_info['人口'] # 把值里面的人口这个键赋值给population
fact = city_info['地标'] # 把值里面的地标这个键赋值给fact
print(f'\n{city} 在 {country.title()}') # 打印键和嵌套字典的值
print(f'有 {population} 人') # 打印键和嵌套字典的值
print(f'{fact} 是标志建筑') # 打印键和嵌套字典的值