点击查看代码
# 6-1 人:使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name、last_name、age和city。将存储在该字典中
# 的每项信息都打印出来。
person = {
"first_name": "john",
"last_name": "smith",
"age": 18,
"city": "beijing"
}
for i in person: #i-字典中的key
print(person)
print("=============")
# 6-2 喜欢的数字:使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为
# 值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
likeNumber = {"zhangsan":12,"lisi":23,"wangwu":34,"zhaoyue":45,"lt":56,"hd":67}
for x,y in likeNumber.items():
print(x +" number is " +str(y))
print("-------------")
for key in likeNumber:
print(key)
print("-------------")
for key in likeNumber.keys():
print(key)
print("-------------")
for value in likeNumber.values():
print(value)
# 6-3 词汇表:Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
# 想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
# 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n)
# 插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
dicts = {'list': '列表', 'str': '字符串', 'tuple': '元组', 'dict': '字典', 'int': '整型' }
for key,value in dicts.items():
print(key+" : "+value)
print("----------------")
for key in dicts.keys():
for value in dicts.values():
print(key + " : "+ value)
break
print("----------------")
for key in dicts.keys():
print(key+" : "+dicts[key])
print("----------------")
# 6-4 词汇表2:既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码,将其中的一系列print语句替换为一个遍历字典中的键和值的循环。
# 确定该循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
dicts = {'list': '列表', 'str': '字符串', 'tuple': '元组', 'dict': '字典', 'int': '整型' }
for value in dicts.values():
print(value)
for key,value in dicts.items():
print(f"{key}:{value}")
print("==============")
# 6-5 河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt'。
# 使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
# 使用循环将该字典中每条河流的名字都打印出来。
# 使用循环将该字典包含的每个国家的名字都打印出来。
dics = {'nile': 'egypt', 'long river': 'china', 'amazon': 'brazil' }
for key,value in dics.items():
print(f"The {key.title()} runs through {value.title()}")
print("==============")
for key,value in dics.items():
print("the %s runs through %s" % (key.title(), value.title()))
print("==============")
for value in set(dics.values()):
print(value.title())
# 6-6 调查:在6.3.1节编写的程序favorite_languages.py中执行以下操作。
# 创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
# 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
names = ['john', 'jen', 'phil', 'alice', 'eric']
for i in names:
if i in favorite_languages.keys():
print(i+"感谢参与调查")
continue
else:
print("希望您有机会来参与调查")
print("==================")
for name in names:
if name in favorite_languages.keys():
print(name+"感谢参与调查")
else:
print("希望您有机会来参与调查")
print("==================")
# 6-7 人:在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people的列表中。
# 遍历这个列表,将其中每个人的所有信息都打印出来。
p1 = {
"first_name": "john",
"last_name": "smith",
"age": 18,
"city": "beijing"
}
p2 = {
"first_name": "jack",
"last_name": "london",
"age": 30,
"city": "london"
}
p3 = {
"first_name": "michael",
"last_name": "jackson",
"age": 65,
"city": "paris"
}
# people = {p1,p2,p3}//错的
people = [p1,p2,p3]
for i in people:
print(i)
print("==============")
for peo in people:
for key,value in peo.items():#这里用第一个循环来循环列表,第二个循环循环字典
print(f"{key} and {value}")
print("==============")
# 6-8 宠物:创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,
# 包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
xiaomao = {'type': 'cat', 'master': 'xiaoming'}
xiaogou = {'type': 'dog', 'master': 'xiaohong'}
xiaoji = {'type': 'chicken', 'master': 'xiaojun'}
pets = [xiaomao,xiaogou,xiaoji]
for i in pets:
for x,y in i.items():
print(f"{x}'s name {y}")
print("------------")
# 6-9 喜欢的地方:创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他
# 喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
favorite_places = {'jack':['beijing', 'tianjing'], 'john': ['guangzhou','shenzhen','zhuhai'],
'alice': ['shanghai', 'suzhou', 'wuxi']}
for key,value in favorite_places.items():
print(f"{key} favorite places are {value}")
print("------------")
for key,values in favorite_places.items():
print(f"{key} favorite places are ",end="")
for value in values:
print(value,end=",")
print("\n=========")
# 6-10 喜欢的数字:修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
#见6-2
# 6-11 城市:创建一个名为cities的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约
# 数以及一个有关该城市的事实。在表示每座城市的字典中,应包含country、population和fact等键。将每座城市的名字以及有关它们的信息都打印出来。
cities = {
'shanghai':{'country':'china','popultion': '10000'},
'new york':{'country':'american','popultion': '1000'},
'london':{'country':'english','popultion': '100'}
}
for key,values in cities.items():
print(f"City {key}:",end="")
for i,value in values.items():
print(f"{i} is {value}",end=",")
print()
print("==================")
# 6-12 扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格式。
#基于6-11添加
cities['suzhou'] = {'country':'china','popultion': '1000'}#新增键值对
favorite_languages["zhaoyue"] = "python"
dict1 = {'name': 'Alice', 'age': 20}
dict2 = {'gender': 'female', 'city': 'New York'}
dict1.update(dict2)
my_dict = {'name':'Alice','age':20}
my_dict.setdefault('gender','female')
my_dict.setdefault('name','Bob')
keys = ['name','age','gender']
values = ['Alice',20, 'female']
my_dict = dict.fromkeys(keys, values)
print(favorite_languages)
# 6.5 小结
# 在本章中,你学习了:如何定义字典,以及如何使用存储在字典中的信息;如何访问和修改字典中的元素,以及如何遍历字典中的所有信息;
# 如何遍历字典中所有的键-值对、所有的键和所有的值;如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。
#
# 在下一章中,你将学习while循环以及如何从用户那里获取输入。这是激动人心的一章,让你知道如何将程序变成交互性的——能够对用户输入作出响应。