python筆記
字典也是 python 提供的一種常用的資料結構,它用於存放具有對映關係的資料。
比如有份成績表資料,語文:79,數學:80,英語:92,這組資料看上去像兩個列表,但這兩個列表的元素之間有一定的關聯關係。如果單純使用兩個列表來儲存這組資料,則無法記錄兩組資料之間的關聯關係。為了儲存具有對映關係的資料,python 提供了字典,字典相當於儲存了兩組資料,其中一組資料是關鍵資料,被稱為 key;另一組資料可通過 key 來訪問,被稱為 value。形象地看,字典中 key 和 value 的關聯關係如圖 1 所示
由於字典中的 key 是非常關鍵的資料,而且程式需要通過 key 來訪問 value,因此字典中的 key 不允許重複。
程式既可使用花括號語法來建立字典,也可使用 dict() 函式來建立字典。實際上,dict 是一種型別,它就是 python 中的字典型別。在使用花括號語法建立字典時,花括號中應包含多個 key-value 對,key 與 value 之間用英文冒號隔開;多個 key-value 對之間用英文逗號隔開。如下**示範了使用花括號語法建立字典:scores =
print(scores)# 空的花括號代表空的dictempty_dict = {}print(empty_dict)# 使用元組作為dict的keydict2 = print(dict2)上面程式中第 1 行**建立了乙個簡單的 dict,該 dict 的 key 是字串,value 是整數;第 4 行**使用花括號建立了乙個空的字典;第 7 行**建立的字典中第乙個 key 是元組,第二個 key 是整數值,這都是合法的。需要指出的是,元組可以作為 dict 的 key,但列表不能作為元組的 key。這是由於 dict 要求 key 必須是不可變型別,但列表是可變型別,因此列表不能作為元組的 key。
在使用 dict() 函式建立字典時,可以傳入多個列表或元組引數作為 key-value 對,每個列表或元組將被當成乙個 key-value 對,因此這些列表或元組都只能包含兩個元素。例如如下**:vegetables = [(『celery』, 1.58), (『brocoli』, 1.29), (『lettuce』, 2.19)]# 建立包含3組key-value對的字典dict3 = dict(vegetables)print(dict3) # cars = [[『bmw』, 8.5], [『bens』, 8.3], [『audi』, 7.9]]# 建立包含3組key-value對的字典dict4 = dict(cars)print(dict4) # 如果不為 dict() 函式傳入任何引數,則代表建立乙個空的字典。例如如下**:# 建立空的字典
dict5 = dict()print(dict5) # {}還可通過為 dict 指定關鍵字引數建立字典,此時字典的 key 不允許使用表示式。例如如下**:# 使用關鍵字引數來建立字典dict6 = dict(spinach = 1.39, cabbage = 2.59)print(dict6) # 上面粗體字**在建立字典時,其 key 直接寫 spinach、cabbage,不需要將它們放在引號中。
字典的基本用法
對於初學者而言,應牢記字典包含多個 key-value 對,而 key 是字典的關鍵資料,因此程式對字典的操作都是基於 key 的。基本操作如下:通過 key 訪問 value 。通過 key 新增 key-value 對。通過 key 刪除 key-value 對。通過 key 修改 key-value 對。通過 key 判斷指定 key-value 對是否存在。通過 key 訪問 value 使用的也是方括號語法,就像前面介紹的列表和元組一樣,只是此時在方括號中放的是 key,而不是列表或元組中的索引。如下**示範了通過 key 訪問 value:scores = # 通過key訪問valueprint(scores[『語文』])如果要為 dict 新增 key-value 對,只需為不存在的 key 賦值即可:# 對不存在的key賦值,就是增加key-value對scores[『數學』] = 93scores[92] = 5.7print(scores) # 如果要刪除宇典中的 key-value 對,則可使用 del 語句。例如如下**:# 使用del語句刪除key-value對del scores[『語文』]del scores[『數學』]print(scores) # 如果對 dict 中存在的 key-value 對賦值,新賦的 value 就會覆蓋原有的 value,這樣即可改變 dict 中的 key-value 對。例如如下**:cars = # 對存在的key-value對賦值,改變key-value對cars[『bens』] = 4.3cars[『audi』] = 3.8print(cars) # 如果要判斷字典是否包含指定的 key,則可以使用 in 或 not in 運算子。需要指出的是,對於 dict 而言,in 或 not in 運算子都是基於 key 來判斷的。例如如下**:# 判斷cars是否包含名為』audi』的key
print(『audi』 in cars) # true# 判斷cars是否包含名為』porsche』的keyprint(『porsche』 in cars) # falseprint(『lamborghini』 not in cars) # true通過上面介紹可以看出,字典的 key 是它的關鍵。換個角度來看,字典的 key 就相當於它的索引,只不過這些索引不一定是整數型別,字典的 key 可以是任意不可變型別。可以這樣說,字典相當於索引是任意不可變型別的列表:而列表則相當於 key 只能是整數的字典。因此,如果程式中要使用的字典的 key 都是整數型別,則可考慮能否換成列表。此外,還有一點需要指出,列表的索引總是從 0 開始、連續增大的;但字典的索引即使是整數型別,也不需要從 0 開始,而且不需要連續。因此,列表不允許對不存在的索引賦值:但字典則允許直接對不存在的 key 賦值,這樣就會為字典增加乙個 key-value 對。列表不允許對不存在的索引賦值,但字典則允許直接對不存在的 key 賦值。
部落格第一次
2017年11月23號,今天是我第一次寫部落格。之前老師一直要求新生要開始寫部落格了,拖了這麼久,是時候開始把平時學習和生活拿來寫寫了。從進實驗室也有20多天了,在這20多天裡,我感覺實驗室的氛圍非常好。在這裡我不僅可以學習c語言,而且還可以學習英語,學習高數。剛進實驗室的時候,在迎新會上,學姐和學...
第一次 部落格
第一次接觸信奧,以前都未聽說過,很神奇的樣子。而且,難的一匹。我的天,當別人80 選大王 時,我還在50徘徊!唉!程式設計是電腦的基本的操作,也就是電腦的大腦 我現在再也不信人工智慧可以稱霸世界了,if 可以 就黑掉 第一次過題的時候就別提有多麼的興奮了!選擇的if語句總體而言,還算好理解,但是有很...
第一次部落格
本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...