天天看點

第11天:Python dictionary

by 潮汐

Python 中的字典提供了一種靈活的通路群組織資料的方式

字典是由很多值組成的集合

字典的索引可以是不同的資料類型,同樣也不止是整數,也有字元串

字典的索引被稱為“鍵”,鍵及鍵所關聯的值叫鍵值對(類似于 Java 中的 Map 集合)

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值 key=>value 對用冒号 : 分割,每個鍵值對之間用逗号 , 分割,整個字典包括在花括号 {} 中 ,格式如下所示:

鍵一般是唯一的,如果鍵重複,最後的一個鍵值對會替換前面的鍵值對,值沒有唯一性要求,如下:

值可以取任何資料類型,但鍵必須是不可變的,如字元串,數字或元組,如下:

建立一個字典,并通路資料字典内容,以下字典的鍵是 ‘size’,'color','character',這些鍵對應的值是‘big’,'white','gentle' 通路字典的值通過方括号裡面添加鍵就可以直接進行通路,例如:

同樣的,字典也可以用整數作為鍵,和清單的索引類似,隻是字典的值是任何整數類型都行,不必要從0開始,因為鍵值的資料類型是任意的,如下:

因為字典是不排序的,是以不能像清單那樣切片。

如果通路字典中不存在的鍵,将導緻 KeyError 出錯資訊。這很像清單的“越界”

IndexError 出錯資訊。在互動式環境中輸入以下代碼,并注意顯示的出錯資訊,因

為沒有 'color' 鍵:

向字典添加新内容的方法是增加新的鍵/值對,修改或删除已有鍵/值對如下執行個體:

對字典元素的删除操作能單一删除也能将整個字典清空,顯示的删除一個字典使用 del 指令“

以上列印語句這會引發一個異常,因為用 del 後的字典不再存在:

字典值可以沒有限制地取任何python對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。

兩個重要的點需要記住:

1)不允許同一個鍵出現兩次。建立時如果同一個鍵被指派兩次,後一個值會被記住,如下執行個體:

執行個體

2)鍵必須不可變,是以可以用數字,字元串或元組充當,是以用清單就不行,如下執行個體:

len() 方法計算字典元素個數(鍵的總個數)

str() 方法輸出字典中可以列印的字元串辨別

type() 方法傳回輸入的變量類型,如果變量是字典就傳回字典類型

删除字典内所有元素,clear() 方法沒有任何傳回值,執行個體如下:

copy() 方法對字典進行複制

執行個體中 dict2 其實是 dict1 的引用,即别名,是以輸出結果都是一緻的,dict3 對父對象進行了深拷貝,深拷貝不會随dict1 修改而修改,子對象是淺拷貝是以随 dict1 的修改而修改,即指派會随父對象的修改而修改,拷貝不會随父對象的修改而修改,以上結果輸出如下:

建立一個新字典,以序列 seq 中元素做字典的鍵,val為字典所有鍵對應的初始值,該方法傳回一個新的字典

fromkeys() 方法文法

執行個體:

執行結果傳回一個新的字典,如果不指定值預設為None,以上結果輸出結果為:

傳回指定鍵的值,如果值不在字典中傳回 default 值

get() 方法文法

以上結果輸出為:

如果鍵在字典dict裡傳回true,否則傳回false

item() 方法以清單傳回可周遊的(鍵, 值) 元組數組

可周遊的元組數組舉例:

傳回一個疊代器,可以使用 list() 來轉換為清單

keys()方法文法:

由結果看出結果傳回一個疊代對象,這時候我們可以使用 list 轉換為清單:

Python 字典 setdefault() 方法和 get() 方法類似, 如果 key 在 字典中,傳回對應的值。如果不在字典中,則插入 key 及設定的預設值 default,并傳回 default ,default 預設值為 None。

setdefault()方法文法:

Python 字典 update() 函數把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裡。

文法:

Python 字典 values() 方法傳回一個疊代器,可以使用 list() 來轉換為清單,清單為字典中的所有值。

Python 字典 pop() 方法删除字典給定鍵 key 所對應的值,傳回值為被删除的值。key 值必須給出。 否則,傳回 default 值。

pop()方法文法:

Python 字典 popitem() 方法随機傳回一個鍵值對(key,value)形式,按照 LIFO(Last In First Out 後進先出法) 順序規則,即最末尾的鍵值對。

如果字典已經為空,卻調用了此方法,就報出KeyError異常。

将字典清空:

結果輸出為:

清單中的元素表項由于元素通過序列從 0 開始遞增存放,是以清單中的表項是排序的,而字典的内容的表項是不排序的,如下例子就很好的說明清單和字典的差別:

由以上執行個體可以看出,當清單元素内容一緻,順序不同再對比内容時比對不成功,同理字典值比對成功,說明字典中元素内容不按順序存放。

本節給大家介紹了 Python 資料結構之字典的操作與使用,對 Python 工程師使用字典的一些基本知識提供了支撐。

示例代碼:Python-100-days-day011

參考:

http://www.pythondoc.com/pythontutorial3

https://www.runoob.com/python3/python3-dictionary.html

關注公衆号:python技術,回複"python"一起學習交流

第11天:Python dictionary

作者:純潔的微笑

出處:www.ityouknow.com

資源:微信搜【純潔的微笑】關注我,回複 【程式員】【面試】【架構師】有我準備的一線程式必備計算機書籍、大廠面試資料和免費電子書。 一共1024G的資料,希望可以幫助大家提升技術和能力。

本文如對您有幫助,還請多幫 【推薦】 下此文。

點我了解:Tooool-程式員一站式導航網站