字典的定义和访问
1、字典的定义和访问
字典就是键值对的集合。 定义集合要使用花括号{}
xName = { key:value,key:value }
xName我们自己定义
key可以是数字或者字符串类型(也可以是布尔类型)
value可以是任意类型的数据
代码段1:
# 字典的定义:键值对
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
# 字典的使用
print(stu['name'])
print(stu['age'])
print(stu['gender'])
运行结果:
马瑞鹏
20
男
2、字典数据的添加、删除、修改和字典列表的区别
访问数据stu1[‘name’]
添加键值对
创建空字典
修改值
删除键值对 del() del
代码段2:
# 字典的定义:键值对
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
# 字典的添加(添加rank,排名是1)
stu['rank'] = 1
print(stu)
# 修改年龄
stu['age'] = 18
print(stu)
del stu['age']
print(stu)
运行结果:
{'name': '马瑞鹏', 'age': 20, 'gender': '男', 'rank': 1}
{'name': '马瑞鹏', 'age': 18, 'gender': '男', 'rank': 1}
{'name': '马瑞鹏', 'gender': '男', 'rank': 1}
字典和列表的区别:
1、列表是通过自动的索引来访问的;字典是通过自己定义的key键来访问的
2、列表里面的数据是有序的,它的顺序决定了访问它的索引;字典里面的键值对是无序的,是通过自定义的key来访问的(键不能重复,重复会被覆盖)
有序和无序不单体现在定义的时候,也体现在存储在计算机内存上
3、一行定义和多行定义
代码段1:
# 字典的定义可以多行
stu = {'name':'马瑞鹏',
'age':20,
'gender':'男'}
# 字典的添加(添加rank,排名是1)
print(stu)
运行结果:{'name': '马瑞鹏', 'age': 20, 'gender': '男'}
代码段2:
l1 = ['Maruipeng','chenyijie','zhangwanjing']
l2 = ['Maruipeng','chenyijie','zhangwanjing',
'Maruipeng','chenyijie','zhangwanjing'
'Maruipeng','chenyijie','zhangwanjing'
'Maruipeng','chenyijie','zhangwanjing']
print(l1)
print(l2)
运行结果:
['Maruipeng', 'chenyijie', 'zhangwanjing']
['Maruipeng', 'chenyijie', 'zhangwanjing', 'Maruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjing']
代码段3:
# String类型如果要多行注释需要加\
str = "ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAA" \
"SBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
"BSJKKKKKKKK" \
"BSJKKKKKKKKK"
print(str)
运行结果:
ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAASBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBSJKKKKKKKKBSJKKKKKKKKK
列表和字典嵌套使用
嵌套使用:
列表的元素可以是某个字典,字典的键值对中的值可以是一个列表
列表里面嵌套字典:
# 列表的定义可以多行 stu = {'name':'马瑞鹏','age':20,'gender':'男'} students = [{'name':'马瑞鹏','age':20,'gender':'男'}, {'name':'孙畅煊','age':20,'gender':'男'}, {'name': '陈奕洁', 'age': 20, 'gender': '女'}, {'name': '张宛靖', 'age': 20, 'gender': '女'} ] print(students[1]) print(students[1]['age']) print(students[2]['gender']) |
运行结果:
{'name': '孙畅煊', 'age': 20, 'gender': '男'}
20
女
字典中嵌套列表:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
stu1 = {'name':"陈龑",'age':19,'gender':'男','hobby':["小米","华为","苹果"]}
students = [{'name':'马瑞鹏','age':20,'gender':'男'},
{'name':'孙畅煊','age':20,'gender':'男'},
{'name': '陈奕洁', 'age': 20, 'gender': '女'},
{'name': '张宛靖', 'age': 20, 'gender': '女'},
stu1]
print(stu1)
print(students[4])
print(students[4]['hobby'])
运行结果:
{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}
{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}
['小米', '华为', '苹果']
5、如何判断两个字典是否相等
可以通过==判断两个列表或者两个字典里面的内容是否是相同的,列表比较内容及顺序,字典只比较键值对的内容是否一致,不比较顺序
代码段1:
l1 = ["Zhangsan","MaRuipeng"]
l2 = ["MaRuipeng","Zhangsan"]
l3 = ["MaRuipeng","Zhangsan"]
print(l1 == l2)
print(l2==l3)
运行结果:
False
True
代码段2:
d1 ={'stu1':"马瑞鹏","stu2":"张宛靖","stu3":"陈奕洁"}
d2 ={"stu2":"张宛靖",'stu1':"马瑞鹏","stu3":"陈奕洁"}
print(d1==d2)
运行结果:
True
注意:字典里面的键可以是数字
代码段3:
d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}
print(d1)
运行结果:
{1: '马瑞鹏', 2: '张宛靖', 3: '陈奕洁'}
注意:不能访问不存在的键
代码段4:
d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}
print(d1[1])
运行结果:马瑞鹏
练习:创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日
代码段5:
# 创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日
birthdaies = {'mrp':'9月29日',"zhj":"5月13日"}
print(birthdaies['mrp'])
print(birthdaies['zhj'])
运行结果:
9月29日
5月13日
6、使用keys和values取得键集合和值集合
字典的一些方法:
1、keys() 返回所有键的集合(不是列表类型,不用管什么类型,可以通过for遍历)
2、values()返回所有值的集合
3、items() 返回所有键值对的集合(这里的键值对使用元组数据类型)
代码段1:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
for k in stu.keys():
print(k)
for v in stu.values():
print(v)
keys = list(stu.keys())
values = list(stu.values())
print(keys)
print(values)
运行结果:
name
age
gender
马瑞鹏
20
男
['name', 'age', 'gender']
['马瑞鹏', 20, '男']
可以通过list()方法把上面的集合转成真正的列表 (在range的时候用过)
list(d.keys())
list(d.values())
list(d.items())
代码段4:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
print(stu.items())
运行结果:
dict_items([('name', '马瑞鹏'), ('age', 20), ('gender', '男')])
7、遍历字典的两种方法
1、for i in d.items():
i[0] i[1]
代码段1:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
for i in stu.items():
print(i)
print(i[0],i[1])
运行结果:
('name', '马瑞鹏')
name 马瑞鹏
('age', 20)
age 20
('gender', '男')
gender 男
代码段2:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
items = list(stu.items())
print(items)
运行结果:
[('name', '马瑞鹏'), ('age', 20), ('gender', '男')]
2、for k,v in d.items() :
k,v
代码段2:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
for k,v in stu.items():
print(k)
print(v)
运行结果:
name
马瑞鹏
age
20
gender
男
8、判断键是否存在和设置键的默认值
检查字典中是否存在值或者键使用in或者not in,当不指定keys和values的时候默认是检查键集合。
代码段1:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
res = 'gender' not in stu.keys()
print(res)
res2 = '马瑞鹏' in stu.values()
print(res2)
# 默认判断键
res3 = 'gender' in stu
print(res3)
res4 = '马瑞鹏' in stu
print(res4)
运行结果:
False
True
True
False
使用get取得值,防止报错。
d.get(key,defaultValue)
设置默认值:d.setdefault(key,value)
如果key不存在,就添加key-value键值对,如果存在,不做任何事情
代码段2:
stu = {'name':'马瑞鹏','age':20,'gender':'男'}
stu.setdefault("name","马瑞杰")
stu.setdefault("hobby",'英语、游泳')
print(stu['name']+"的爱好是:"+stu['hobby'])
练习题
- 创建一个包含多个键值对的字典
- 遍历打印出所有的键key
- 遍历打印出所有的值value
- 遍历打印所有的键值对
- 删除某一个键值对
代码:
# 1、创建一个包含多个键值对的字典
course = {'数据结构':"史蕊",'计算机网络':"刘景森",'计算机组成原理':"袁泉"}
# 2、遍历打印出所有的键key
for k in course.keys():
print(k)
# 3、遍历打印出所有的值value
for v in course.values():
print(v)
# 4、遍历打印所有的键值对
for k,v in course.items():
print("教"+k+"的老师是"+v)
# 5、删除某一个键值对
del course['计算机组成原理']
print(course)
运行结果:
数据结构
计算机网络
计算机组成原理
史蕊
刘景森
袁泉
教数据结构的老师是史蕊
教计算机网络的老师是刘景森
教计算机组成原理的老师是袁泉
{'数据结构': '史蕊', '计算机网络': '刘景森'}