day05

1、字典(dict)講解及增刪改查操作

  數據類型劃分:可變數據類型,不可變數據類型

  不可變數據類型:元組,bool, int, str。又稱可哈希
  可變數據類型:list,dict,set。又稱不可哈希
  dict(字典)的key(鍵) 必須是不可變數據類型(可哈希)。它的value(值)是任意數據類型。
  dict 優點:能利用二分查找去查詢,速度快。
                   存儲大量的關係型數據

《day05》
《day05》

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

View Code

 

1.2、增

《day05》
《day05》

 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、刪

《day05》
《day05》

 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、改

《day05》
《day05》

 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、查

《day05》
《day05》

 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、字典的嵌套

《day05》
《day05》

 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)

字典的嵌套

 

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *