字典 (dict)

 

书写格式:{}

 

 1、基本结构,字典是以键值对的方式出现

 

info = {
        "k1":"v1", #键值对
        "k2":"v2"
 }

 

  “k1”:"v1" 表示为:key:value 前面是key,后面是值

 

 

 

2、字典的value(值)可以是任何值

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 {'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44), 'k1': 18, 'k2': True}

 

 

 

3、布尔值、列表、字典不能作为字典的key

 

  ps1:

 

ios 字典转字符串 打印不全 字典输出格式_元组

1 info ={
2     1: 'asdf',
3     "k1": 'asdf',
4     True: "123",   #布尔值不能作为字典的key,只能是值
5 }
6 print(info)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 {1: '123', 'k1': 'asdf'}

 

  ps2:

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 {1: '123', 'k1': 'asdf', (11, 22): 123}

 

 

 

4、字典无序

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

  两次结果进行比较,会发现字典是无序的。

 

  运行程序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的值

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 18
2 True

 

  ps2:

 

  找到11

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 11

 

 

 

6、字典支持 del 删除

 

   ps1:

 

ios 字典转字符串 打印不全 字典输出格式_元组

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']

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

#删除掉了,所以什么都没有

 

  ps2:

 

  删除kk1

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

1 {'k1': 18, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 2: True, 'k4': (11, 22, 33, 44)}

 

 

 

7、字典的for循环

 

  ps1:

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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()

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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

 

ios 字典转字符串 打印不全 字典输出格式_元组

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])

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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:

 

  获取键值对

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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

 

ios 字典转字符串 打印不全 字典输出格式_元组

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)

ios 字典转字符串 打印不全 字典输出格式_元组

 

  执行结果:

 

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