天天看點

Python資料類型中的字典-建立和基本操作

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 ,如需轉載請自行聯系原作者