第六章深入python的set和dict

2022-02-03 00:48:32 字數 3245 閱讀 5983

1.collections中的abc

collection是sized,iterable,container的子類

1

from collections.abc import23

#45 a ={}

6true

2.dict的常見用法

1 a = ,2"

2":}34

#清空字典

5a.clear()67

#淺拷貝字典 淺拷貝雖然可以正常賦值,但是如果 my_dopy_dict 中的值進行了改變,則 a 中的值也會進行對應的改變

8 my_dopy_dict =a.copy()910

#深拷貝 深拷貝則是實實在在的在記憶體當中宣告了乙個新的變數

11import

copy

12 new_dict =copy.deepcopy(a)

1314

#get函式 dict.get(要查詢的key,如果沒找到對應key的內容返回的資料)

15print(a.get("

3",)) #

1617

#dict.fromkeys() 函式用於建立乙個新字典,以序列 seq 中元素做字典的鍵 seq可以是可迭代的,value 為字典所有鍵對應的初始值。

18 my_list = [1, 2, 3]

19 my_new_dict = dict.fromkeys(my_list, ) #

, 2: , 3: }

2021

#setdefault() 函式和 get()方法 類似,22#

如果鍵不存在於字典中,將會新增鍵並將值設為預設值。23#

如果存在,則將會返回該key對應的value

24 a.setdefault("

3", "

cc") #

a= , '2': , '3': 'cc'}

25print(a.setdefault("

2", "

cc")) #

返回2627#

update() 函式是合併兩個字典:把字典dict2的鍵/值對更新到dict裡。28#

如果字典b中有與a相同的key,則會把a中的key對應的value進行更新29#

如果字典b中有a中沒有的key,則a會將未有的key與value新增進去

30 b =

31a.update(b)

32print(a) #

, '2': 'dd', '3': 'cc'}

3.dict的子類

1

class

mydict(dict):

2def

__setitem__

(self, key, value):

3 super().__setitem__(key, value * 2)45

6 my_dict = mydict(one=1)

7print(my_dict) #

不可以修改

8 my_dict["

one"] = 1

9print(my_dict) #

可以像c語言一樣修改

1

from collections import

userdict23

4class

mydict(userdict):

5def

__setitem__

(self, key, value):

6 super().__setitem__(key, value * 5)78

9 my_dict = mydict(one=3)

10print(my_dict) #

呼叫重寫的__setitem__

11 my_dict["

one"] = 4

12print(my_dict) #

呼叫重寫的__setitem__

1

from collections import

defaultdict

23 my_dict = defaultdict(dict) #

dict的子類

4print(my_dict["

bobby

"]) #

{},不存在則返回{}

5pass

4.set和frozenset

1 a = set('

abcdee')

2 a.add('f'

)3print(a) #

4 another_set = set('

defgh')

5#新增資料

6a.update(another_set)

7print(a) #8#

集合的差集

9 re_set =a.difference(another_set)10#

減法實現於__ior__魔法函式

11 re_set2 = a -another_set12#

集合的交集&

13 re_set3 = a &another_set14#

集合的並集|

15 re_set4 = a |another_set

16print(re_set) #

17print(re_set2) #

18print(re_set3) #

19print(re_set4) #20#

也可以用if in判斷(實現於__contains__魔法函式)

21if'a

'inre_set:

22print('

a in re_set

') #

a in re_set

5.dict和set實現原理

dist和set使用雜湊表儲存:

注意:dict的key以及set的value都必須是可以hash的

什麼是可以hash:不可變物件:str,frozenset,tuple以及自己實現了__hash__的類

dict的記憶體花銷大,但查詢速度快,自定義的物件或python內部的物件都是用dict包裝的

dict的儲存順序和元素新增順序有關

dict在新增資料時可能改變已有資料的順序

第六章 深入模板

django內建的模板引擎包含模板上下文 模板變數 標籤,過濾器 模板上下文 模板變數 變數值有檢視函式或檢視類傳遞所得 標籤 對變數進行控制輸出,例如判斷和迴圈控制等 過濾器 多變數進行操作處理。variable1 字串或整型 variable2 variable3 元組或列表 屬性 索引 dja...

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...

python 第六章 字典

1.在python中,字典用放在花括號 中的一系列鍵 值對表示 tip 鍵 值對的排列順序與新增順序不同。python不關心鍵 值對的新增順序,而只關心鍵和值之間的關聯關係 2.在對字典遍歷的時候要記住加上.items 表示獲取字典的內容 3.title將獲取的字母首字母大寫 4.鍵 值,其中鍵代表...