首页 > 技术文章 > Python基本知识(4)——字典

missdx 2019-05-13 14:58 原文

1、字典(dict)讲解及增删改查操作

  数据类型划分:可变数据类型,不可变数据类型

  不可变数据类型:元组,bool, int, str。又称可哈希
  可变数据类型:list,dict,set。又称不可哈希
  dict(字典)的key(键) 必须是不可变数据类型(可哈希)。它的value(值)是任意数据类型。
  dict 优点:能利用二分查找去查询,速度快。
                   存储大量的关系型数据

1 dic = {
2     'name':'xiaoming',
3     'age':20,
4     'sex':'male'
5 }
View Code

 

1.2、增

 1 #增:
 2 #1、
 3 #1.1、增加原先没有的
 4 dic['height'] = 180
 5 print(dic)
 6 #result:
 7 #{'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180}
 8 #1.2、覆盖原先的
 9 dic['age'] = 18
10 print(dic)
11 #result:
12 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180}
13 #2、setdefault对于已有的键值,更改不采取任何操作,对于没有的键值,更改才有效果
14 '''
15 dic.setdefault('weight')#后面不加值,则默认为None
16 print(dic)
17 '''
18 #result:
19 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180, 'weight': None}
20 dic.setdefault('weight',130)
21 print(dic)
22 #result:
23 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180, 'weight': 130}

1.3、删

 1 #
 2 #1、
 3 print(dic.pop('weight'))#130,说明字典中pop也有返回值
 4 print(dic)
 5 #result:
 6 #{'name': 'xiaoming', 'age': 18, 'sex': 'male', 'height': 180}
 7 
 8 #若删除一个字典里面没有的键,会报错,如:
 9 '''
10 dic.pop('hobby')
11 '''
12 #这时,若我们不知道有没有这个见,但是我们有想删除它,只需要在后面加一点提示即可,如:
13 print(dic.pop('hobby',None))#在控制台,会打印出来这个None
14 
15 #2、 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
16 dic1 = {
17     'name':'xiaoming',
18     'age':20,
19     'sex':'male',
20     'height':180,
21     'hobby':'football',
22     'school':'PeKing University',
23     'hometown':'anhui'
24 }
25 print(dic1.popitem())#有返回值
26 print(dic1)
27 dic1.popitem()
28 print(dic1)
29 dic1.popitem()
30 print(dic1)
31 dic1.popitem()
32 print(dic1)
33 #result:
34 #{'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180, 'hobby': 'football', 'school': 'PeKing University'}
35 # {'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180, 'hobby': 'football'}
36 # {'name': 'xiaoming', 'age': 20, 'sex': 'male', 'height': 180}
37 # {'name': 'xiaoming', 'age': 20, 'sex': 'male'}
38 
39 #3、del
40 dic2 = {
41     'name':'xiaoming',
42     'age':20,
43     'sex':'male'
44 }
45 del dic2['age']#若删除没有的键,则报错,故尽量用pop方法
46 print(dic2)
47 #result:
48 #{'name': 'xiaoming', 'sex': 'male'}
49 
50 #4、clear:清空
51 dic3 = {
52     'name':'xiaoming',
53     'age':20,
54     'sex':'male'
55 }
56 dic3.clear()
57 print(dic3)
58 #result:
59 #{}

1.4、改

 1 #
 2 #1、覆盖
 3 dic4 = {
 4     'name':'xiaoming',
 5     'age':20,
 6     'sex':'male'
 7 }
 8 dic4['age'] = '18'
 9 print(dic4)
10 
11 #2、update
12 dic5 = {
13     'name':'xiaoming',
14     'age':20,
15     'sex':'male'
16 }
17 dic6 = {
18     'name':'daming',
19     'height':180
20 }
21 dic5.update(dic6)#已有键值则覆盖,没有的键值则添加
22 print(dic5)
23 #result:
24 #{'name': 'daming', 'age': 20, 'sex': 'male', 'height': 180}

1.5、查

 1 #
 2 dic7 = {
 3     'name':'xiaoming',
 4     'age':20,
 5     'sex':'male'
 6 }
 7 print(dic7.keys())
 8 print(dic7.values())
 9 print(dic7.items())
10 print(dic7['name'])#缺点:若没有这个键,则报错
11 print(dic7.get('name'))#print(dic7.get('name1',None))若没有这个键,则给出提示
12 #result:
13 #dict_keys(['name', 'age', 'sex'])
14 # dict_values(['xiaoming', 20, 'male'])
15 # dict_items([('name', 'xiaoming'), ('age', 20), ('sex', 'male')])
16 # xiaoming
17 # xiaoming
18 
19 #先看一下一个对a,b赋值,并打印出来的例子。
20 a,b=1,2
21 print(a,b)
22 a,b=[1,2]#列表
23 print(a,b)
24 a,b=(1,2)#元祖
25 print(a,b)
26 #result:
27 #1 2
28 #1 2
29 #1 2
30 
31 #打印出来的是一个元祖
32 for i in dic7.items():
33     print(i)
34 #result:
35 #('name', 'xiaoming')
36 #('age', 20)
37 #('sex', 'male')
38 
39 #如果想要打印每一个键值,而不是元祖,该怎么做呢?参考上面对a,b的赋值
40 for k,v in dic7.items():
41     print(k,v)
42 # result:
43 # name xiaoming
44 # age 20
45 # sex male

 2、字典的嵌套

 1 dic = {
 2     'name':['xiaoming','daming','xiaohong'],
 3     'age':[18,19,20],
 4     'class':{
 5         'teacher':'xiaowang',
 6         'age':50,
 7         'sex':'male'
 8     }
 9 }
10 #将'daming'改为'DAMING'
11 dic['name'][1] = dic['name'][1].upper()
12 print(dic)
13 
14 #在class字典中添加一个键值:'subject':Chinese
15 dic['class'] ['subject'] = 'Chinese'
16 print(dic)
字典的嵌套

推荐阅读