Python 从入门到实践 第六章
目录
第6章 字典
Python的字典是一个非常重要且独特的数据结构
其中键值对是最重要的形式,其与JSON数据格式有许多相似之处,但也有不同
1.使用字典
alien_0 = {'color': 'green','points' : 5}
print(alien_0['color'])
# OUTPUT
green
2.动态添加键值对
字典是动态的,随时可以添加键值对
只需要指定字典里,用方括号括起来的键名以及相关联的值
# alien_0 = {} 想要创建一个空字典可以用该形式
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
# OUTPUT
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
在修改键值对的值时,可以直接通过键名访问并修改值,方便快捷
3.删除键值对
使用del语句即可将键值对彻底删除
del alien_0['color']
print(alien_0)
# OUTPUT
{'points': 5, 'x_position': 0, 'y_position': 25}
4.由类似对象组成的字典
即用一个字典来来存储众多对象的同一种信息
favorite_languages = {
'jen' : 'Python',
'sarah' : 'java',
'edward' : 'C++',
}
我们使用一个字典,来存储不同对象的语言使用信息
5.遍历字典
遍历通常需要用到循环,我们在编写用于遍历字典的循环时,
可以申明两个变量,分别用于存储键值对中的键和值
我们可以使用字典类型的方法.items()来将键值对返回为列表
# 在设置循环变量时,尽量选择符合语义的单词来进行存储
for key,value in favorite_languages.items() :
print("\nKey: " + key)
print("\nvalue: " + value)
# OUTPUT
Key: jen
value: Python
Key: sarah
value: java
Key: edward
value: C++
只遍历键
如果我们只是使用其键,可以使用.keys()方法来将所有的键返回成一个列表
for key in favorite_languages.keys() :
print(key.title())
# OUTPUT
Jen
Sarah
Edward
如果想按照顺序输出,我们可以加一个sorted函数
for key in sorted(favorite_languages.keys()) :
print(key.title())
# OUTPUT 按首字母大小进行排序
Edward
Jen
Sarah
只遍历值
同样如果我们只想遍所有的值,我们可以使用.values()方法
for value in favorite_languages.values() :
print(value.title())
# OUTPUT
Python
Java
C++
5.嵌套
字典列表
有时候需要将一系列的字典存储在列表中或者将列表作为值存储在字典中,这称为嵌套
# 例如拿外星人举例,先创建多个外星人字典,包含不同的键值,
# 再将多个外星人字典存储到一个列表当中
alien_0 = {'color': 'green','point': '5'}
alien_1 = {'color': 'yellow', 'point': '10'}
alien_2 = {'color': 'red', 'point': '15'}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
# OUTPUT
{'color': 'green', 'point': '5'}
{'color': 'yellow', 'point': '10'}
{'color': 'red', 'point': '15'}
综上,我们获得了一个字典列表,但手动生成效率太低,实际上我们在开发过程中采用大面积生成,切片修改的方式来进行
aliens = []
for alien in range(30) :
alien = {'color': 'green','point': '5'}
aliens.append(alien)
# 综上即可快速生成30个属性相同的外星人,且存储到一个列表里
# 接下来即可进行切片处理
for alien in aliens[:5]:
if alien['color'] == 'green' :
alien['color'] = 'yellow'
alien['point'] = 10
这样切片处理可以大大节省时间,提高效率
列表字典(一个键需要关联多个值)
当一个字典内的键需要关联多个值时,我们可以采用列表存储其值
favorite_languages = {
'jen' : ['python','java'],
'sarah' : ['java','c'],
'edward' : ['C++','vb'],
}
for languages in favorite_languages.items():
print(languages)
综上我们可以将一个键的多个值以列表形式存储并访问
字典中存储字典(信息存储,表单管理)
如果一个网站的用户有很多,且每个用户有独特的用户名和其他信息,我们可以分别设为字典来存储
users = {
'aeinstein': {
'first_name' : 'albert',
'last_name' : 'einstein',
'location' : 'princeton',
},
'mcuie': {
'first_name' : 'marie',
'last_name' : 'curie',
'location' : 'paris',
}
}
for key,value in users.items() :
print(key.title())
# OUTPUT
Aeinstein
Mcuie
6.总结
在本次的学习中,我针对Python的字典进行了全方面的学习,对这一特殊的数据存储形式进行了深入的认识。
也与JSON格式的数据做了对比,发现字典会更加灵活,这也是Python的有点之一