字典
属性----键值对的集合
1、字典:dictionary,简写:dict
2、key–value;键–值;
3、键值中间用冒号分割,不同的键值对之间用逗号隔开;
4、字典与列表的相同点与不同点:
相同点
a)列表和字典都数于集合类型
b)列表和字典都是通过索引来访问
不同点
a)列表适合保存同一类信息,例如:name列表只保存姓名,如果存放的种类比较多,则容易混乱;
b)字典可以保存多种信息,例如:学生的姓名、年龄、性别有专门的键和值来保存,并且一一对应;
c)列表的排序有序,已经规定好了,字典的排序需要自己规定;
5、基本属性
key----数字、字符串、布尔类型(布尔类型用的比较少,一般使用字符串)
value----任意类型的数据
student1 = {'name': 'Maker', 'age': '24', 'gender': 'male'}
数据访问
student1 = {'name': 'Maker', 'age': '24', 'gender': 'male'}
print(student1['name'])
数据访问过程中,字典名称后面中括号,输入 键 的内容,注意:键的属性是字符串,就输入字符串,不要输入错误;
字典的操作
增加键值对
student1 = {'name': 'Maker', 'age': '24', 'gender': 'male'}
student1['rank'] = 3
print(student1)
修改值的数据
student1 = {'name': 'Maker', 'age': '24', 'gender': 'male'}
student1['age'] = 24.5
print(student1)
删除数据
student1 = {'name': 'Maker', 'age': '24', 'gender': 'male'}
del(student1['gender'])
print(student1)
一行定义和多行定义
1、列表多行:列表中一个长列表可以放在多行
2、字符串多行:一个字符很多的字符串,不可以在多行中注释,需要用“连续字符”(\)
3、字典多行:可以多行,和集合类型数据多行操作相似(列表)
列表和字典的嵌套使用
1、字典中可以嵌套列表
student1 = {'name': 'xuhang', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print(student1['hobbies'][0])
2、列表中可以嵌套字典
studets = [{'name': 'hammer', 'age': '24', 'gender': 'male'},
{'name': 'maker', 'age': '24', 'gender': 'male'},
{'name': 'hero', 'age': '24', 'gender': 'male'},
]
print(studets[1]['name'])
如何判断两个字典是否相等-- 用‘ == ’判断
1、列表判断是否相等:长度、内容,顺序都相等;(列表是一个有序的集合)
2、字典判断是否相等:内容相同、键值对个数相等即可;(字典是一个无序集合,自己定义了索引)
使用keys和values取得键集合和值集合,并对字典进行遍历
1、两个方法dict.keys() 、dict.values(),获得一个集合,这个集合属性不是列表,可以通过list()方法把内容转化为列表;
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print(type(student1.keys()))
print(list(student1.keys()))
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print(type(student1.values()))
print(list(student1.values()))
2、取得键值对的集合–dict.items(),返回值属性不是列表,只是一个集合,把键值对转化为元组
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print(type(student1.items()))
print(list(student1.items()))
3、for循环对字典进行遍历
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
for k, v in student1.items():
print(k, v)
判断键是否存在和设置键的默认值
应用场景:在从字典中取值过程中,我们可以判断,键是否在字典中,如果在,则进行取值,这样帮助我们避免报错。
同样可以判断值是否存在。
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print('name' in student1.keys())
以下判断方式,默认判断键的值。
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
print('name' in student1)
给某个键设置默认值
此处用法:在sutdent1中,name对应的值为maker,此时如果后面再设定name对应的值为hero,则name对应的值还是maker,最有在程序中,没有对应的键情况下,写入设定默认值,默认值才会生效。
此处应用:在未知字典的情况下,给字典的某个键设置默认值,则可以防止报错,如果xx键有对应的值,则直接使用对应的值,如果没有,则使用默认值,这样我们就能够知道键值的情况,帮助我们避免出现程序报错。
备注:使用student1[‘name’] = 'hero’则会直接更改name键对应的值。
student1 = {'name': 'maker', 'age': '24', 'gender': 'male', 'hobbies': ['basketball', 'football']}
student1.setdefault('name', 'hero')
print(student1['name'])