字典 (dict)
书写格式:{}
1、基本结构,字典是以键值对的方式出现
info = {
"k1":"v1", #键值对
"k2":"v2"
}
“k1”:"v1" 表示为:key:value 前面是key,后面是值
2、字典的value(值)可以是任何值
1 info = {
2 "k1": 18,
3 "k2": True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11, 22),
14 }
15 ],
16 "k4": (11, 22, 33, 44)
17 }
18 print(info)
执行结果:
1 {'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44), 'k1': 18, 'k2': True}
3、布尔值、列表、字典不能作为字典的key
ps1:
1 info ={
2 1: 'asdf',
3 "k1": 'asdf',
4 True: "123", #布尔值不能作为字典的key,只能是值
5 }
6 print(info)
执行结果:
1 {1: '123', 'k1': 'asdf'}
ps2:
1 info = {
2 1: 'asdf',
3 "k1": 'asdf',
4 True: "123",
5 #[11,22]: 123 #列表不能做为字典的key,会报错。
6 (11,22): 123, #元组可以,做为列表的key
7 #{'k1':'v1'}: 123 #字典不可以做为字典的key("TypeError: unhashable type:'dict')
8
9 }
10 print(info)
执行结果:
1 {1: '123', 'k1': 'asdf', (11, 22): 123}
4、字典无序
1 info = {
2 "k1": 18,
3 "k2": True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11, 22),
14 }
15 ],
16 "k4": (11, 22, 33, 44)
17 }
18 print(info)
执行结果:
两次结果进行比较,会发现字典是无序的。
运行程序1次得出的结果:
1 {'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk3': (11, 22), 'kk2': 'vv2'}], 'k1': 18, 'k2': True, 'k4': (11, 22, 33, 44)}
再运行程序得出的结果:
1 {'k4': (11, 22, 33, 44), 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk3': (11, 22), 'kk2': 'vv2'}], 'k1': 18, 'k2': True}
5、索引方式找到指定元素
ps1:
取18的值
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 v = info['k1'] #获取key的值,就是18
19 print(v)
20 v = info[2] #获取2的值,就是True
21 print(v)
执行结果:
1 18
2 True
ps2:
找到11
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22), #找到11
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 v = info['k3'][5]['kk3'][0] #找到11; 最后元组拿到第一个元素,加[0]
19 print(v)
执行结果:
1 11
6、字典支持 del 删除
ps1:
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 del info['k1']
执行结果:
#删除掉了,所以什么都没有
ps2:
删除kk1
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 del info['k3'][5]['kk1'] #删除'kk1': 'vv1',
19 print(info)
执行结果:
1 {'k1': 18, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 2: True, 'k4': (11, 22, 33, 44)}
7、字典的for循环
ps1:
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 for item in info:
19 print(item)
执行结果:
1 {2: True, 'k4': (11, 22, 33, 44), 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k1': 18}
2 2
3 k4
4 k3
5 k1
ps2:
dict里面的功能
info.keys() 默认循环他所有的key
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 for item in info.keys():
19 print(item)
执行结果:
1 {'k4': (11, 22, 33, 44), 2: True, 'k3': [11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2'}], 'k1': 18}
2 k4
3 2
4 k3
5 k1
ps3:
循环他的values()
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 for item in info.values():
19 print(item)
执行结果:
1 {2: True, 'k4': (11, 22, 33, 44), 'k1': 18, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}]}
2 True
3 (11, 22, 33, 44)
4 18
5 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
ps4:
即想获取key,又想获取values
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 for item in info.keys(): #即想获取key,又想获取values
19 print(item,info[item])
执行结果:
1 {'k4': (11, 22, 33, 44), 2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k1': 18}
2 k4 (11, 22, 33, 44)
3 2 True
4 k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk1': 'vv1', 'kk3': (11, 22)}]
5 k1 18
ps5:
获取键值对
1 info = {
2 "k1": 18,
3 2: True,
4 "k3": [
5 11,
6 [],
7 (),
8 22,
9 33,
10 {
11 'kk1': 'vv1',
12 'kk2': 'vv2',
13 'kk3': (11,22),
14 }
15 ],
16 "k4": (11,22,33,44)
17 }
18 for k,v in info.items():
19 print(k,v)
执行结果:
1 {'k1': 18, 2: True, 'k4': (11, 22, 33, 44), 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}]}
2 k1 18
3 2 True
4 k4 (11, 22, 33, 44)
5 k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk1': 'vv1', 'kk3': (11, 22)}]
ps6:
True 1 False 0
1 info ={
2 "k1": 'asdf',
3 True: "123",
4 # [11,22]: 123
5 (11,22): 123,
6 # {'k1':' v1'}: 123
7
8 }
9 print(info)
执行结果:
1 {True: '123', 'k1': 'asdf', (11, 22): 123}
整理必须掌握的东西
一、数字
int(..)
二、字符串
replace/find/join/strip/startswith/split/upper/lower/format
tempalte = "i am {name}, age : {age}"
# v = tempalte.format(name='alex',age=19)
v = tempalte.format(**{"name": 'alex','age': 19})
print(v)
三、列表
append、extend、insert
索引、切片、循环
四、元组
忽略
索引、切片、循环 以及元素不能被修改
五、字典
get/update/keys/values/items
for,索引
dic = {
"k1": 'v1'
}
v = "k1" in dic
print(v)
v = "v1" in dic.values()
print(v)
六、布尔值
0 1
bool(...)
None "" () [] {} 0 ==> False