实验环境:anaconda4.6.11
五、字典
1.使用字典
1)在python中,字典是键-值对。每个键都与一个值相关联。字典用放在{}中的一系列键-值对表示,每个键-值对用逗号隔开,如:
alien_0 = {‘color’ : ’green’, ‘points’ : 5}
2)要访问字典中的值,可依次指定字典名和放在方括号内的键:
print(alien_0[‘color’])
newpoints = alien_0[‘points’]
3)要添加键-值对,可依次指定字典名、用方括号括起的键和相关联的值:
alien_0[‘x_position’] = 0
alien_0[‘y_position’] = 25
4)可以先创建一个空字典:
allien_0 = { }
5)要修改字典中的值,可以依次指定字典名、用方括号括起的键以及与该键相关联的新值:
alien_0 = {‘color’ : ’green’}
alien_0[‘color’] = ‘yellow’
6)要删除键值对,可以使用del语句,指定字典名和要删除的键:
alien_0 = {‘color’ : ’green’, ‘points’ : 5}
del alien_0[‘points’]
2.遍历字典
1)遍历所有的键-值对
这里用到了items()方法:
user_0 = {
'username': 'efermi',
'first_name': 'enrico',
'last_name': 'fermi',
}
for key, value in user_0.items():
print("\n键:" + key)
print("值:" + value)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name,language in favorite_languages.items():
print(name.title() + "的最喜欢的语言是" + language.title() + "。")
2)遍历字典中的所有键
这里用到keys()方法。
for name in favorite_languages.keys():
print(name.title())
如果要按顺序遍历字典中的所有键,可以使用前面学到的sorted()函数。
for name in sorted(favorite_languages.keys()):
print(name.title() + ",感谢您参加这次投票。")
3)遍历字典中的所有值
这里用到方法values()。
print("以下语言被涉及到:")
for language in favorite_languages.values():
print(language.title())
这种做法提取了字典中的所有值而没有考虑重复。为了剔除重复项,可以使用集合set,集合类似于列表,但是每个元素都必须是独一无二的。
print("以下语言被涉及到:")
for language in set(favorite_languages.values()):
print(language.title())
3.嵌套
1)将字典存储在列表中
我们首先创建了3个字典,每个字典代表一个外星人,然后我们将这3个外星人字典存入一个列表中。
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)
事实上,外星人可能不止3个,当我们用range()函数生成多个外星人时:
#创建一个用于存储外星人的空列表
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("外星人的总数量:" + str(len(aliens)))
2)将列表存储在字典中
# 存储所点比萨的信息
pizza = {
'crust': 'thick',
'toppings': ['mushrooms', 'extra cheese'],
}
# 概述所点的比萨
print("You ordered a "+pizza['crust']+"-crust pizza "+
"with the following toppings:")
for topping in pizza['toppings']:
print("\t"+topping)
3)在字典中存储字典
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}
for username, user_info in users.items():
print("\nUsername: "+username)
full_name = user_info['first']+" "+user_info['last']
location = user_info['location']
print("\tFull name: "+full_name.title())
print("\tLocation: "+location.title())