Python當中字典的建立和基本操作
本章 含有 字典定義 及操作
l 字典定義
l 基本操作
l 常用方法
清單也是常用的資料類型-清單是最靈活的一個,甚至可以當成一個小的資料庫,用來存儲資料。
用清單存儲資料的時候會非常的不友善,所謂的不友善,下面會有例子示範當中,比較一下。
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒号(:)分割,每個對之間用逗号(,)分割,整個字典包括在花括号({})中
格式如下 dict = {’key’:’value’, ’key’:’value’}
字典相關 定義
l 字典(dictionary)是除清單以外python之中 最靈活的内置資料結構類型。
l 差別:
字典當中的元素是通過鍵來存取,而不是通過偏移存取。
字典的特性
字典值可以沒有限制地取任何python對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
字典可以說 是在python當中,除了清單以為 最靈活的内置資料類型了。
唯一的差別,就是我們在字典當中取值的時候,并不是像序列那樣 通過索引取值。字典雖然有很多值,但是我們并不把字典稱之為序列。因為在python2當中,ptthon3.幾之前 字典都是無序的,隻不過在最新的python當中 看起來有序,但是不能通過偏移去存取。
看一下它的差別-什麼叫做通過鍵來取值,這就要說到清單和字典他們兩個的差別了。
可以在回顧一下清單。
回顧清單案例
操作,程式是沒有問題的,關鍵問題在于它并不能直覺的反應,内容是什麼
比如player1 、0号元素和1号元素,不友善知道 0 号代表的就是 字元串 milo,1号元素代表 整數 100。
看上面的資料結構
我們在定義的時候,不把它們定義到一起,在程式當中調用資料的時候,就會顯示的不太直覺。
也就是 這個值 它沒有一個直覺的名字。它隻是聲明的一個數字 用來做索引。
這種情況下 用字典就非常友善了。下面來看下字典建立和使用
字典建立
字典的定義方式。
建立字典就是花括号{ key 和 value} key我們叫做鍵 value叫做值,兩個就是鍵值,
都是一對 一對 成對出現的。可以給值取個名字。比如 叫做 user 或者 HP 這樣名字
然後通過這個名字 去取這個值。
建立字典案例
現在我們得到一個清單。注意看我們現在得到一個清單,它是無序的,和清單是有差別的,這個不重要,因為我們取值都是不是通過索引。我們是通過名字,也就 說到的 kev 簡寫 K
字典取值寫法 案例
設計已經比較人性化了,我們要取裡面的值,不需要記住索引,什麼 0 位 啊 1 位的什麼 ,我們隻要記住 kev 名字是什麼 就可以取值 。明顯我們可以看出 這是一個非常标簽化 人性化的一個索引。
好處 : 通過 名字 就知道 大概要擷取到什麼樣的資料,友善的通過它的名字 擷取到什麼樣的值,我們叫做 kev 和 value ,稱之為 鍵值對。 kev 可以是 任何類型 比如 數字 字元串 甚至可以是任何一個對象,前面是一個索引 後面 是對應的對象。
看上去好像跟 清單一樣, 實際上是有着 本質上的差別的。
是因為 1 這個 kev 值 對于的是a,是以 擷取到才是 a
字典屬性
l 通過鍵 而不是偏移量來讀取
l 任意對象的引用的集合(聯想清單存儲結構圖)
l 可變,異構,任意嵌套
l 屬于可變映射類型
l 對象引用表(哈希表-支援快捷檢索的資料結構)
字典通路
l 通過Key通路Value
l 單個通路
dict[’key’]
l 周遊
For key in dict
…print ’key’= %s,value =%s’%’(key,dict[key])
l 方法
’key’in dict 或dict.has_key(’key’)
字典增加一個值例子
字典裡面 添加的資料不是按照我們添加的結構排列的。
是python3預設的排序,是按照順序排列的,順序目前對于一般的來說 影響不是特别大,因為我們是通過索引,kev 來取它的值
字典周遊例子
字典 既然 不是 一個 序列 ,那麼 取值的 是通過key取值的
k會自動 疊代 字典當中的 k
d 字典 裡面 疊代 k 索引1值
字典方法
檢視某個kev 在不在 字典裡面,沒有傳回False ,有 傳回True
還可以用 help(dict)檢視字典 相關幫助
help看的時候 比較 詳細,比較多 ,檢視方法的 可以用 dir(dict)
字典更新
l 采取覆寫更新
1. Dict[’key’]=’earth’
2. 更新dict[’key’] = ’qwer’
指定某一個kev 進行替換。讓它 等于一個值 ,如果沒有 就增加,如果有的話,就會進行更新。
删除字典和字典元素
l Del dict1[’name’]# 删除鍵為’name’條目
l Dict1.clear()# 删除dict中所有的條目
l Del dict1# 删除整個dict1字典
l Dict1.pop(’name’)# 删除并傳回鍵為’name’的條目
字典并沒有那麼複雜,它和清單 類似,差別就是 它并不是像清單當中 是有序的,在字典當中是通過key 取值,不是像清單當中 通過偏移量來取的。
a) 删除條目
2. 删除所有條目
3. 删除整個字典
4. 删除并傳回鍵為’定義’的條目
字典技巧
Python字典包含了以下内置方法
1
Dict.clear()
删除字典内所有元素
2
dict.copy()
傳回一個字典的淺複制
3
<a href="http://www.runoob.com/python/att-dictionary-fromkeys.html" target="_blank">dict.fromkeys(seq[, val])</a>
建立一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值
4
<a href="http://www.runoob.com/python/att-dictionary-get.html" target="_blank">dict.get(key, default=None)</a>
傳回指定鍵的值,如果值不在字典中傳回default值
5
<a href="http://www.runoob.com/python/att-dictionary-has_key.html" target="_blank">dict.has_key(key)</a>
如果鍵在字典dict裡傳回true,否則傳回false
6
以清單傳回可周遊的(鍵, 值) 元組數組
7
<a href="http://www.runoob.com/python/att-dictionary-keys.html" target="_blank">dict.keys()</a>
以清單傳回一個字典所有的鍵
8
<a href="http://www.runoob.com/python/att-dictionary-setdefault.html" target="_blank">dict.setdefault(key, default=None)</a>
和get()類似, 但如果鍵不存在于字典中,将會添加鍵并将值設為default
9
<a href="http://www.runoob.com/python/att-dictionary-update.html" target="_blank">dict.update(dict2)</a>
把字典dict2的鍵/值對更新到dict裡
10
<a href="http://www.runoob.com/python/att-dictionary-values.html" target="_blank">dict.values()</a>
以清單傳回字典中的所有值
11
<a href="http://www.runoob.com/python/python-att-dictionary-pop.html" target="_blank">pop(key[,default])</a>
删除字典給定鍵 key 所對應的值,傳回值為被删除的值。key值必須給出。 否則,傳回default值。
12
<a href="http://www.runoob.com/python/python-att-dictionary-popitem.html" target="_blank">popitem()</a>
随機傳回并删除字典中的一對鍵和值。
本章 獲得知識點
了解 python 中, 字典建立。
字典的基本操作, 字典周遊 删除字典 更新字典等。
2017年12月23日王宇林
本文轉自
新網學會 51CTO部落格,原文連結:http://blog.51cto.com/xwxhvip/2053761 ,如需轉載請自行聯系原作者