Python编程-第六章-字典
一个简单的字典
alien_0 = {'color': 'green','points': 5}
print(alien_0['color'])
print(alien_0['points'])
添加键值对
alien_0 = {'color':'greem','points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_postions'] = 25
print(alien_0)
修改字典中的值
alien_0 = {'color':'greem'}
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_posistion':25,'speed':'medium'}
print(f"Original 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'] = alien_0['x_position'] + x_increment
print(f"New position: {alien_0['x_position']}")
删除字典中的键值对
alien_0={'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
由类似的对象组成的字典
favorite_languages = {
'jen': 'python',
'serah': 'c',
'edward': 'ruby',
'phil': 'python',
}
language = favorite_languages['serah'].title()
print(f"Sarah's favorite language is {language}.")
使用get()访问值
alien_0 = {'color': 'green','speed': 'slow'}
print (alien_0['points'])
Warning
以上语句报错Traceback 。
alien_0 ={'color': 'green','speed': 'slow'}
point_value = alien_0.get('points',"No poin value assgined.")
print(point_value)
练习题
persion={'first_name': 'chen','last_name': 'cheng','age': '23','city': 'chongqing'}
print(persion)
number={'alice': '9','chen': '5'}
out_put = number.get('alice',"No poin values as ")
print(out_put)
遍历字典
遍历所有键值对
探索各种遍历方法前,先来看一个新字典,它用于存储有关网站用户的信息。下面的字典存储一名用户的用户名、名和姓:
user_0={
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key ,value in user_0.items():
print(f"\nKey: {key}")
print(f"value: {value}")
打印键名和数值
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name ,language in favorite_languages.items():
print(f"{name.title()}'s favorite language is {language.title()}.")
只打印键名称
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(f"{name.title()}")
# 注意:默认是只打印键的名称
for name in favorite_languages:
print(f"{name.title()}")
# 注意:默认排序后进行打印键的名称
for name in sorted(favorite_languages.keys()):
print(f"{name.title()},tank you for taking the poll.")
遍历字典中所有的值
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
# 去重后的值
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
Warning
注意:集合和字典的区别。
languaes={'python','ruby','python','c'}
print(languaes)
集合和字典很容易混淆,因为它们都是用一对花括号定义的。当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典,集合不会以特定的顺序存储元素
练习题
练习6-5:河流 创建一个字典,在其中存储三条重要河流及其流经的国家。例如,一个键值对可能是'nile': 'egypt' 。
rivers = {'nile': 'egypt','chana1': 'huanghe','chana':'changjiang'}
for contry,river in rivers.items():
print(f"The {river} runs through {contry}")
for river in rivers.values():
print(f"{river.title()}")
for contry in rivers.keys():
print(f"{contry.title()}")
字典的嵌套
字典嵌套到列表中
alien_0 ={'color': 'green','points': 5}
alien_1 ={'color': 'yellow','points': 10}
alien_2 = {'color': 'red','points': 15}
aliens=[alien_2,alien_1,alien_0]
for alien in aliens:
print(alien)
# 批量创建字典并嵌套在列表中
aliens = []
for alien_number in range(30):
new_alien ={'color': 'green','points': 5,'speed': 'slow'}
aliens.append(new_alien)
for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")
批量修改字典值
aliens = []
for alien_number in range(30):
new_alien ={'color': 'green','points': 5,'speed': 'slow'}
aliens.append(new_alien)
for alien in aliens[0:5]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['points'] = 10
for alien in aliens[0:3]:
if alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['points'] = 15
for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")
将列表存储到字典中
favorite_lanuages = {
'jen': ['python','ruby'],
'sarah': ['c'],
'edward': ['ruby','go'],
'phil':['python','haskell'],
}
for name ,lanuages in favorite_lanuages.items():
print(f"\n{name.title()}'s favorite languages are:")
for lanuage in lanuages:
print(f"\t{lanuage.title()}")
在字典中存储字典
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}")
full_name =f"{user_info['first']} {user_info['last']}"
location = user_info['location']
print(f"\tFull name: {full_name.title()}")
print(f"\tLocation: {location.title()}")
练习题
为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people 的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
persion0={'first_name': 'alice','last_name': 'tag','age': '23','city': 'chongqing'}
persion1={'first_name': 'chen','last_name': 'cheng','age': '23','city': 'chongqing'}
persion2={'first_name': 'his','last_name': 'like','age': '23','city': 'chongqing'}
persions = [persion0,persion1,persion2]
for per in persions:
print(per)
练习6-8:宠物 创建多个表示宠物的字典,每个字典都包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets 的列表中,再遍历该列表,并将有关每个宠物的所有信息都打印出来。
dog1={'name': 'pipi','age':'3','kind': 'dog','master': 'alice'}
dog2={'name': 'pipi','age':'3','kind': 'dog','master': 'alice'}
dog3={'name': 'pipi','age':'3','kind': 'dog','master': 'alice'}
pets=[dog1,dog2,dog3]
for pet in pets:
print(f"{pet}")
favorite_places={
'alice': ['china','talan'],
'chencheng': ['chongqing','luzhou'],
'yingjunli': ['sanya'],
}
for name,places in favorite_places.items():
print(f"{name.title()}'s favorite place are:")
for place in places:
print(f"\t{place.title()}")
练习6-10:喜欢的数2 修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数,然后将每个人的名字及其喜欢的数打印出来
favorite_number={
'alice': ['1','3','5'],
'job': ['2','4','6'],
}
for name,numbsers in favorite_number.items():
print(f"{name.title()}'s favorite number are:")
for num in numbsers:
print(f"\t{num}")