# 一 简单的字典
# alien.py
alien_0 = {'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])
# 二 使用字典
alien_0 = {'color': 'green'}
# 01 访问字典中的值 -- 访问
# alien.py
alien_0 = {'color': 'green'}
print(alien_0['color'])
alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print(f"You just earned {new_points} points!")
# 02 添加键值对 -- 修改-添加
# alien.py
alien_0 = {'color': 'green'}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
# 03 先创建空字典
# alien.py
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
# 04 修改字典中的值 -- 修改键
# alien.py
alien_0 = {'color': 'green'}
print(f"The alien is {alien_0['color']}.")
alien_0['color'] = 'yellow'
print(f"The alien is now {alien_0['color']}.")
alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print(f"Original x_position: {alien_0['x_position']}")
# 向右移动外星人
# 根据当前速度决定外星人向右移动多远
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else:
x_increment = 3
alien_0['x_position'] += x_increment
print(f"New x_position: {alien_0['x_position']}")
# 05 删除键值对
# alien.py
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points'] # 删除列表也用 del 关键字
print(alien_0)
# 06 由类似对象组成的字典
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
language = favorite_languages['sarah'].title()
print(f"Sarah's favorite language is {language}.")
# 使用 get() 访问值 -- IMPORTANT
# alien_no_points.py
try: # 使用 键 访问出错
alien_1 = {'color': 'green', 'speed': 'slow'}
print(alien_1['points'])
except Exception as e:
print(f"error: {e}")
alien_0 = {'color': 'green', 'speed': 'slow'}
# 使用 get() 访问不存在键可以附带默认值,未指定为 None
point_value = alien_0.get('points', 'No point value assigned')
print(point_value)
# 作业
# 01 人.py
'''
使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。
该字典应包含键first_name、last_name、age和city。
将存储在该字典中的每项信息都打印出来。
'''
person = {
'first_name': 'chan',
'last_name': 'ero',
'age': 18,
'city': 'JiNing'
}
for k,v in person.items():
print(f"{k}: {v}")
# 02 喜欢的数.py
"""
使用一个字典来存储一些人喜欢的数。请想出5个人的名字,并将这些名字用作字典中的键;找
出每个人喜欢的一个数,并将这些数作为值存储在字典中。打印每个人的名字和喜欢的数。为了
让这个程序更有趣,通过询问朋友确保数据是真实的。
"""
favorite_numbers = {
"March 7th": 7,
"Herta": 3,
"Bronya": 5,
"Seele": 8,
"Clara": 6,
"Yukong": 9,
"Pela": 2,
"Luocha": 4,
"Sampo": 1,
"Himeko": 0
}
for k,v in favorite_numbers.items():
print(f"Name: {k} \tFavoriteNumber: {v}")
# 03 词汇表.py
'''
Python字典可用于模拟现实生活中的字典。为避免混淆,我们将后者称为词汇表。想出你在前
面学过的5个编程术语,将其用作词汇表中的键,并将它们的含义作为值存储在词汇表中。以整
洁的方式打印每个术语及其含义。为此,可先打印术语,在它后面加上一个冒号,再打印其含
义;也可在一行打印术语,再使用换行符(\n)插入一个空行,然后在下一行以缩进的方式打印
其含义。
'''
words = {
'indent': 'python语法的一部分',
'int ': '整型变量',
'float': "浮点型变量",
'class': "声明 类 关键字",
'struct': '声明 结构体 关键字'
}
for k, v in words.items():
print(f"{k}\t: {v}")
# 三 遍历字典
# 01 遍历所有键值对
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi'
}
# user.py
# user_0 = ...
for key, value in user_0.items():
print(f"\nKey: {key}")
print(f"Value: {value}")
# favorite_languages.py
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
for name, language in favorite_languages.items():
print(f"{name.title()}'s favorite language is {language.title()}.")
# 02 遍历字典中的所有键
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
# -
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
friends = ['phil', 'sarah']
for name in favorite_languages.keys():
print(f"Hi, {name.title()}")
if name in friends:
language = favorite_languages[name].title()
print(f"\t{name.title()}, I see you love {language}.")
if 'erin' not in favorite_languages.keys():
print("Erin, please take out poll!")
# 03 按指定顺序遍历字典中的所有键
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(f"{name.title()}, thank you for taking the poll.")
# 04 遍历字典中的所有值
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
# - 剔除 重复项目
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
'edward': 'raby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
# - 使用花括号创建 集合(不重复的列表) -- 也可以用 set() 函数
languages = {'python', 'ruby', 'python', 'c'}
print(languages)
# 作业
# 04 词汇表2.py
'''
现在你知道了如何遍历字典,可以整理为完成练习6-3而编写的代码,将其中的一系列函数调用
print()替换为一个遍历字典中键和值的循环。确定该循环正确无误后,再在词汇表中添加5个
Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
'''
words['c '] = '一种编译型的高级编程语言'
words['c++ '] = 'c语言加强版,支持范类、面向对象'
words['python'] = '一种灵活的解释型高级编程语言'
words['java'] = '很受欢迎的后端语言'
words['html'] = '超文本标记语言'
for k, v in words.items():
print(f"{k}\t: {v}")
# 05 河流.py
'''
创建一个字典,在其中存储三条重要河流及其流经的国家。例如,一个键值对可能是'nile':
'egypt'。使用循环为每条河流打印一条消息,下面是一个例子。The Nile runs through
Egypt.使用循环将该字典中每条河流的名字打印出来。使用循环将该字典包含的每个国家的名字
打印出来。
'''
rivers = {
"Nile": "Egypt",
"Amazon": "Brazil",
"Yangtze": "China"
}
for country, river in rivers.items():
print(f"The {country.title()} runs through {river.title()}")
# 06 调查.py
'''
在6.3.1节编写的程序favorite_languages.py中执行以下操作。创建一个应该会接受调查的
人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。遍历这个人员名单。对于已参
与调查的人,打印一条消息表示感谢;对于还未参与调查的人,打印一条消息邀请他参加。
'''
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'raby',
'phil': 'python',
}
accepts = {
'jen',
'sarah'
}
for k in sorted(favorite_languages.keys()):
print(f"Hi, {k}.")
if k in accepts:
print(f"\tThank for accept.")
else:
print(f"\tI am looking forward to you accept it.")
# 四 嵌套
# 01 字典列表
# 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 alien in aliens:
print(alien)
# - 使用 range() 生成 30个 alien
# 创建用于储存外星人的空列表
aliens = []
# 创建 30 个绿色的外星人
for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
# 显示前 5 个外星人
for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")
# - 修改前三个外星人
# 创建用于储存外星人的空列表
aliens = []
# 创建 30 个绿色的外星人
for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
# 修改前 3 个外星人
for alien in aliens[0:3]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
elif alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['points'] = 15
# 显示前 5 个外星人
for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")
# 02 在字典中储存列表
# pizza.py
pizza = {
'crust': 'thick',
'toppings': ['mushrooms', 'extra cheese']
}
print(
f"You ordered a {pizza['crust']}-crust pizza "
f"with the following toppings:"
)
for topping in pizza['toppings']:
print(f"\t{topping}")
# favorite_languages.py
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['raby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print(f"\n{name.title()}'s favorite language are:")
for language in languages:
print(f"\t{language.title()}")
# 03 在字典中储存字典
# many_users.py
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
}
}
for username, user_info in users.items():
print(f"\nUsername: {username}")
fullname = f"{user_info['first']} {user_info['last']}"
location = user_info['location']
print(f"\tFull name: {fullname}")
print(f"\tLocation: {location}")
# 作业
# 07 人们
'''
在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名
为people的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
'''
person0 = {
'first_name': 'chan',
'last_name': 'ero',
'age': 18,
'city': 'JiNing'
}
person1 = {
'first_name': 'fire',
'last_name': 'fly',
'age': 18,
'city': 'XingHe'
}
person2 = {
'first_name': 'march',
'last_name': '7th',
'age': 18,
'city': 'XingQiong'
}
people = [person0, person1, person2]
for p in people:
fullname = f"{p['first_name'].title()} {p['last_name'].title()}"
age = p['age']
city = p['city']
print(f"Fullname: {fullname}")
print(f"\tAge: {age}")
print(f"\tCity: {city}")
# 07 宠物
'''
创建多个表示宠物的字典,每个字典都包含宠物的类型及其主人的名字。将这些字典存储在一个名
为pets的列表中,再遍历该列表,并将有关每个宠物的所有信息都打印出来。
'''
pet01 = {
'name': "Kawaii",
'typer': 'dog',
'owner': '@erochan'
}
pet02 = {
'name': "Sakura",
'typer': 'cat',
'owner': '@erochan'
}
pet03 = {
'name': "Wanchan",
'typer': 'dog',
'owner': '@erochan'
}
pets = [pet01, pet02, pet03]
for pet in pets:
name = pet['name']
typer = pet['typer']
owner = pet['owner']
print(f"\nNickName: {name}")
print(f"\tRace: {typer}")
print(f"\tOwner: {owner}")
# 07 喜欢的地方
'''
创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键,并存储每个人
喜欢的1~3个地方。为了让这个练习更有趣些,可以让一些朋友说出他们喜欢的几个地方。遍历这
个字典,并将其中每个人的名字及其喜欢的地方打印出来。
'''
favorite_places = {
"Herta": ["Belobog", "The Space Station"],
"Seele": ["Underworld", "Cocolia Orphanage"],
"Bronya": ["Jarilo-VI", "St. Freya Academy"]
}
for name, places in favorite_places.items():
print(f"\nHi, {name.title()}.")
print("Here are your favorite places: ")
for place in places:
print(f"\t{place}")
# 07 喜欢的数2
'''
修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数,然后将每个人的名字及其喜
欢的数打印出来。
'''
favorite_numbers = {
"March 7th": [7, 17, 27],
"Herta ": [3, 13, 33],
"Bronya ": [5, 15, 25],
"Seele ": [8, 18, 28],
"Clara ": [6, 16, 26],
"Yukong ": [9, 19, 29],
"Pela ": [2, 12, 22],
"Luocha ": [4, 14, 24],
"Sampo ": [1, 11, 21],
"Himeko ": [0, 10, 20]
}
for k,v in favorite_numbers.items():
print(f"Name: {k} Favorite Numbers:", end=' ')
for number in v:
print(f"{number}", end=' ')
print()
# 07 城市
'''
创建一个名为cities的字典,将三个城市名用作键。对于每座城市,都创建一个字典,并在其中包
含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含
country、population和fact等键。将每座城市的名字以及有关信息都打印出来。
'''
cities = {
"Belobog": {
"country": "Randomland",
"population": 500000,
"fact": "This city has beautiful gardens."
},
"Herta Space Station": {
"country": "Wonderworld",
"population": 100000,
"fact": "It's a high-tech station in space."
},
"Jingliu": {
"country": "Dreamland",
"population": 800000,
"fact": "The architecture here is unique."
}
}
for city_name, city_info in cities.items():
name = city_name
country = city_info['country']
population = city_info['population']
fact = city_info['fact']
print(f"\nCity: {name}")
print(f"\tCountry : {country}")
print(f"\tPopulation: {population}")
print(f"\tFact : {fact}")
仅用 600 行代码,小白也能精通 Python 字典
最新推荐文章于 2024-09-27 10:11:28 发布