五、字典
python中,字典是一系列键值对。每个键都与一个值相关联。与键相关联的值可以是数、字符串、列表和字典。
键值对是两个相关联的值。指定键时,python将返回与之相关联的值。键与值之间用冒号分隔,键与键之间用逗号分隔。
1. 访问字典内的值
访问与键相关联的值,可以依次指定“字典名”和放在方括号内的“键”。
alien_0 = { 'color' : 'green','points':'5'}
print(alien_0['color'])
print(alien_0['points'])
print('\n')
green
5
2. 添加键值对。
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名用方括号括起的键和关联的值。
python中,字典中的元素排列顺序与定义事件相同。
alien_0['x_posirion'] = 22
alien_0['y_position'] = 30
print(alien_0)
print('\n')
{'color': 'green', 'points': '5', 'x_posirion': 22, 'y_position': 30}
3. 删除键值对。
删除键值对,可以使用del语句将相对应的键值对彻底删除。
alien_1 = {'color' : 'green','points':'4'}
del alien_1['color']
print(alien_1)
print('\n')
{'points': '4'}
4. 由类似对象组成的字典,可以用一下方式。
{ 回车,缩进4各字符,输入第一个元素,第二个类似,最后一个而元素后回车,下一行缩进4字符输入 }
favorite_languages = {
'li':'c++',
'wang': 'java',
'zhang' : 'python',
'zhao' : 'c',
}
print(favorite_languages['wang'])
print('\n')
java
5. 使用get()访问值。
常规的访问字典中键的值的方法,如果指定的键不存在会出错。使用get()方法则可以避免错误。
get()第一个参数为键,第二个参数为指定键不存在时返回的值。
alien_size_1 = alien_1.get('size','no \'size\' value assigned.')
print(alien_size_1)
print('\n')
no 'size' value assigned.
6. 遍历字典
遍历字典键所有值对,使用 dict.item()命令
user_info= {
'name':'zhangsan',
'gender':'male',
'age':30,
'height':'166cm',
}
for key, value in user_info.items():
print(f'key = {key} \nvalue = {value}\n')
key = name
value = zhangsankey = gender
value = malekey = age
value = 30key = height
value = 166cm
7. 遍历字典中所有的键,使用 dict.keys()
favorite_languages = {
'li':'c++',
'wang': 'java',
'zhang' : 'python',
'zhao' : 'c',
}
key_num = 1
for key in favorite_languages.keys():
print(f'name_{key_num} : {key}')
key_num += 1
print('\n')
name_1 : li
name_2 : wang
name_3 : zhang
name_4 : zhao
8. 按照特定顺序遍历字典中所有键, 使用sorted(),降序添加 'reverse=True'参数
for key in sorted(favorite_languages.keys() , reverse=True):
print(key)
print('\n')
zhao
zhang
wang
li
9.遍历字典中所有的值,使用 dict.value()
如果要剔除重复的值,使用 set(list)语句
favorite_languages = {
'li':'c++',
'wang': 'java',
'zhang' : 'python',
'zhao' : 'c',
'ma' : 'c',
'yang' : 'python',
'liu' : 'html'
}
value_num = 1
for value in favorite_languages.values():
print(f'value_{value_num} : {value}')
value_num += 1
print('\n')
value_num2 = 1
for value in set(favorite_languages.values()):
print(f'value_{value_num2} : {value}')
value_num2 += 1
print('\n')
value_1 : c++
value_2 : java
value_3 : python
value_4 : c
value_5 : c
value_6 : python
value_7 : htmlvalue_1 : c
value_2 : java
value_3 : python
value_4 : html
value_5 : c++
10.嵌套:字典和列表的相互包含。
字典列表。创建一个空字典,生成字典加入其中。
alien_list = []
for aliens_num in range(30):
new_alien = {'color':'green','speed':'low','point': 5}
alien_list.append(new_alien)
for alien in alien_list[:5]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['speed'] = 'medium'
alien['point'] = 10
elif alien['color'] == 'yellow':
alien['color'] = 'red'
alien['speed'] = 'fast'
alien['point'] = 15
print(alien)
{'color': 'yellow', 'speed': 'medium', 'point': 10}
{'color': 'yellow', 'speed': 'medium', 'point': 10}
{'color': 'yellow', 'speed': 'medium', 'point': 10}
{'color': 'yellow', 'speed': 'medium', 'point': 10}
{'color': 'yellow', 'speed': 'medium', 'point': 10}
11. 在字典中存储列表
pizza = {
'crust' : 'thick',
'toppings' : ['mushroom','extra cheese'],
}
print(f"You ordered a {pizza['crust']}-crust pizza" 'with the following toppings:')
for topping in pizza['toppings']:
print('\t'+topping)
print('\n')
favorite_languages_2 = {
'jen' : ['python','c++'],
'lienk' : ['c','java'],
'mark' : ['python','go'],
'david': ['ruby','c'],
}
for name , languages in favorite_languages_2.items():
print(f"{name.title()}'s favorite language is ")
for language in languages:
print(f"\t{language.title()}")
print('\n')
You ordered a thick-crust pizzawith the following toppings:
mushroom
extra cheeseJen's favorite language is
Python
C++
Lienk's favorite language is
C
Java
Mark's favorite language is
Python
Go
David's favorite language is
Ruby
C
12. 在字典中存储字典。
users = {
'jason' : {
'name' : 'jason eilk',
'location' : 'ning xia',
'age' : 22,
'height' : '177cm',
},
'mark' : {
'name' : 'mark speader',
'location' : 'guang zhou',
'age' : 26,
'height' : 166,
}
}
for user_name , user_info in users.items():
print(f"Username : {user_name.title()} ")
print(f"\tFullname : {user_info['name'].title()}")
print(f"\tlocation : {user_info['location'].title()}")
print(f"\tAge : {user_info['age']}")
print(f"\tHeight : {user_info['height']}\n")
Username : Jason
Fullname : Jason Eilk
location : Ning Xia
Age : 22
Height : 177cmUsername : Mark
Fullname : Mark Speader
location : Guang Zhou
Age : 26
Height : 166