字典的定义

字典由键值组成的无序数据的组合。字典的键必须是不可以改变的类型。
用的就是字符串,整型,浮点型,用于区分字典中值的标识和索引一个作用。
列表推导式就是采用表达式的方式直接过滤数据并且返回新的列表的操作。

1
2
3
4
5
方法1:常见
变量 = {键:值,键:值,键:值,键:值...}

students = {'王成':12321,'刘蒙':12367,'赵钱':12322,'梁旭':12342}
print(students,type(students))
1
2
3
4
5
方法2:
变量 = dict(形参 = 值,形参=值...)

students = dict(王成 = 12321,刘蒙 = 12367,赵钱 = 12322 )
print(students,type(students))
1
2
3
4
5
6
7
8
9
10
11
12
13
方法3:数据类型转换
变量 = dict(符合条件的嵌套容器) #容器必须是列表或者元组

stu = [
['王成',12321],
['刘蒙',12367],
['赵钱',12322],
['梁旭',12342]
]

print(stu,type(stu))
students = dict(stu)
print(students,type(students))
1
2
3
4
5
6
7
8
方法4
变量 = dict(zip(键的容器,值的容器))#容器必须是列表或者元组

name = ['王成','刘蒙','赵钱','梁旭']
no = [12321,12367,12322,12342]

students = dict(zip(name,no))
print(students,type(students))

字典的操作

  • 访问字典中的值
1
2
3
4
5
字典[键]

heros = {'呼保义':'宋江','花和尚':'鲁智深','入云龙':'公孙胜','大刀':'关胜','鼓上蚤':'时迁'}
print(heros['入云龙'])
print(heros['花和尚'])
  • 给字典添加值
1
2
3
4
5
字典[新键] = 新值

heros = {'呼保义':'宋江','花和尚':'鲁智深','入云龙':'公孙胜','大刀':'关胜','鼓上蚤':'时迁'}
heros['浪里白条'] = '张顺'
print(heros)
  • 修改字典中的值
1
2
3
4
5
字典[已存在的键] = 新值

heros = {'呼保义':'宋江','花和尚':'鲁智深','入云龙':'公孙胜','大刀':'关胜','鼓上蚤':'时迁'}
heros['大刀'] = '关羽'
print(heros)
  • 删除字典中的值
1
2
3
4
5
del 字典[键]

heros = {'呼保义':'宋江','花和尚':'鲁智深','入云龙':'公孙胜','大刀':'关胜','鼓上蚤':'时迁'}
del heros['大刀']
print(heros)

序列操作

因为字典数据类型没有索引,所以无法使用分片,索引操作。字典类型没有乘法与加法运算。

  • 成员检测(字典检测的是键而非值)
1
2
3
4
5
6
7
8
heros = {'呼保义':'宋江','花和尚':'鲁智深','入云龙':'公孙胜'}

#in
result = '呼保义' in heros
print(result)
#not in
result = '老和尚' not in heros
print(result)

字典的常用函数:

1
2
3
4
max()   获取字典中键的最大值
min() 获取字典中键的最小值
len() 获取字典的长度
dict() 创建字典类型或者将其他数据类型转换为字典
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#max()
weights = {250:'apple',125:'香蕉',300:'梨'}
result = max(weights)
print(result)

dict1 = {'a':22,'C':15,'E':7,'U':55,'Z':77}#键字符串类型 按照字符的编码排序
result = max(dict1)
print(result)

#min()
weights = {250:'apple',125:'香蕉',300:'梨'}
result = min(weights)
print(result)

#len()
weights = {250:'apple',125:'香蕉',300:'梨'}
result = len(weights)
print(result)

字典的遍历

  • 基本格式
1
2
3
4
5
6
7
8
for 变量 in 字典:
循环内容
注意:该循环中变量获取的是字典的键而非值,如果要获取值 使用字典[键变量]

shu = {'诸葛亮':'孔明','刘备':'玄德','关羽':'云长','赵云':'子龙'}

for i in shu:
print(i,shu[i])
  • 仅仅遍历字典的键
1
2
3
4
5
6
for 变量 in 字典.keys():
循环内容

shu = {'诸葛亮':'孔明','刘备':'玄德','关羽':'云长','赵云':'子龙'}
for k in shu.keys():
print(k)
  • 仅仅遍历值
1
2
3
4
5
6
for 变量 in 字典.values():
循环内容

shu = {'诸葛亮':'孔明','刘备':'玄德','关羽':'云长','赵云':'子龙'}
for v in shu.values():
print(v)
  • 同时遍历键和值
1
2
3
4
5
6
for 变量1,变量2 in 字典.items():
循环内容

shu = {'诸葛亮':'孔明','刘备':'玄德','关羽':'云长','赵云':'子龙'}
for k,v in shu.items():
print(k,v)

字典推导式:

  • 基本推导式
1
2
3
4
5
变量 ={变量1:变量2 for 变量1,变量2 in 字典.items()}

fruit = {'apple':'苹果','pear':'梨','orange':'橘子','banana':'香蕉','cherry':'樱桃'}
result = {k:v for k,v in fruit.items()}
print(result)
  • 带有判断条件的推导式
1
2
3
4
5
变量 ={变量1:变量2 for 变量1,变量2 in 字典.items() 条件表达式}

fruit = {'apple':'苹果','pear':'梨','orange':'橘子','banana':'香蕉','cherry':'樱桃'}
result = {k:v for k,v in fruit.items() if k != 'pear'}
print(result)
  • 多循环的字典推导式
1
2
3
4
5
6
变量 = {变量1 + 变量a : 变量2 + 变量b for 变量1,变量2 in 字典1.items() for 变量a,变量b in 字典2.items()}

fruit = {'apple':'苹果','pear':'梨','orange':'橘子','banana':'香蕉','cherry':'樱桃'}
zhushi = {'mantou':'馒头','baozi':'包子','jiaozi':'饺子'}
result ={fk+zk :fv+zv for fk,fv in fruit.items() for zk,zv in zhushi.items()}
print(result)
  • 多循环的字典推导式
1
2
3
4
5
6
变量 = {变量1 + 变量a : 变量2 + 变量b for 变量1,变量2 in 字典1.items() for 变量a,变量b in 字典2.items() 条件表达式}

fruit = {'apple':'苹果','pear':'梨','orange':'橘子','banana':'香蕉','cherry':'樱桃'}
zhushi = {'mantou':'馒头','baozi':'包子','jiaozi':'饺子'}
result ={fk+zk :fv+zv for fk,fv in fruit.items() for zk,zv in zhushi.items() if zk != 'mantou' }
print(result)

字符串格式化字典

字符串字符串%(字典的键)s字符串字符串字符串 % 字典

1
2
3
friends = {'goodfriend':'胖子','girlfriend':'小蒙'}
str1 = '我的好朋友是%(girlfriend)s,我的女朋友是%(goodfriend)s'
print(str1 % friends )