字典(dict)
初识字典
字典是一系列键值对。每个键都与一个值相关联,通过键来访问相关联的值。(字典用花括号{ }中的一系列键值对表示)
alien_0 = {'color':'green','points':5}
print(alien_0['color']) #-->结果是green
键可以是数、字符串、列表和字典。
键与值之间采用冒号分隔,键值对之间采用逗号分隔。
访问字典中的值
通过键来访问与键相关的值。
alien_0 = {'color':'green','points':5}
print(f"You just earnd {alien_0['color']} points!")
添加键值对/修改键值对
字典是一种动态结构,可随时再其中添加键值对,通过指定字典名、方括号括起来的键和相关联的值。
同理在修改键值对的值时:可通过键来改变与键相关的值。
alien_0 = {'color':'green','points':5}
alien_0['x'] = 0
alien_0['y'] = 25
print(alien_0)
在python3.7中,字典元素的排列顺序与定义时相同。将字典打印出来,发现元素的排列顺序与添加顺序相同。
删除键值对
可使用del 语句将对应的键值对彻底删除。使用del删除键值对时,必须指定字典名和要删除的键
alien_0 = {'color':'green','points':5}
del alien_0['color']
print(alien_0)
访问值
使用get()在指定的键不存在时返回一个默认值,从而避免用键访问导致的键值错误。(KeyError)
方法get有两个参数,第一个参数填写的是键,第二个参数填写的是返回的值。
注:当没有填写第二个值时,返回值为None。(表示不存在的特殊值)
alien_0 = {'color':'green','points':5}
point_value = alien_0.get{'points'}#返回值为5
del alien_0['color']
point_value01 = alien_0.get{'color'}#返回值为None
point_value02 = alien_0.get{'color','No point value assigned.'}#返回第二个参数
便历字典
- 便历所有键值对
通过调用items()方法,返回一个键值对列表
user_0 = {
'username':'edermi',
'first':'enrico',
'last':'fermi',
}
for k,v in user_0.items():
print(f"Key = {k}, Value = {V}")
- 便历字典中的所有键
通过调用keys()方法,返回一个键列表(不调用方法默认也为调用所有键)
user_0 = {
'username':'edermi',
'first':'enrico',
'last':'fermi',
}
for k in user_0.keys(): # <=> for k in user_0
print(f"Key = {k}") # 输出username、first、last
- 便历字典中的所有值
通过调用values()方法,返回一个值列表
user_0 = {
'username':'edermi',
'first':'enrico',
'last':'fermi',
}
for v in user_0.values():
print(f"Value = {V}") # 输出edermi、enrico、fermi
提取字典中所有的值,没有考虑值是否重复,剔除重复项可以采用集合(set)。
直接调用set()方法,返回一个不重复的列表。
注: 也可以使用花括号直接创建集合,采用逗号分隔元素。
languages = {'python','ruby','C','Java'}
嵌套
- 字典存储在列表中
Host01 = {'Dog':'Tony'}
Host02 = {'Cat':'Alice'}
Host03 = {'Pig':'Kitty'}
Pets = [Host01, Host02, Host03]
print(Pets)
- 列表作为值存储在字典中
favorite_number = {
'Alice':[5,2],
'Tom':[25],
'Jack':[5,6]
}
for k,v in favorite_number.items():
print(k,v)
列表和字典的嵌套层级不能太多,如果嵌套层级太多证明你该换个更简单的解决方案。
- 将字典存储在字典中
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()}")
通过一层循环访问users的键值对,再通过返回的dict来访问first、last、location。