關於Python中Tuple和Dict詳細解析

Y2J
發布: 2017-05-03 15:59:05
原創
1754 人瀏覽過

這篇文章主要介紹了關於Python中元祖(Tuple)和字典(Dict)的相關資料,文中透過範例程式碼介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

本文記錄了對於Python的資料類型中元祖(Tuple)和字典(Dict)的一些認識,以及部分內置方法的介紹。下面話不多說,來看看詳細的介紹吧。

元祖Tuple

#特徵:元祖內的資料不可變

#一個元素的定義:T = (1,)

>>> T=(1,)
>>> type(T)
<type &#39;tuple&#39;>
登入後複製

特殊的元祖:「可變」的元祖

>>> T=(1,2,3,[1,2,3])
>>> T[3][2] = &#39;vimiix&#39;
>>> T
(1, 2, 3, [1, 2, &#39;vimiix&#39;])
登入後複製

看上去元祖發生了變化,但真正變化的是[1,2,3]這個清單內的元素發生了變化,但是這個清單在T這個元祖中的記憶體位址是沒有改變的。

結論:實際上是元祖的元素包含了可變的元素,但是元祖中元素的記憶體位址沒有變,所以所謂的元祖不可變是指元素指向的記憶體位址是不變

字典Dict

特點:

      1、字典是Python中唯一的對應型別

      2、字典的鍵(KEY)必須是不可變的物件—>因為字典在電腦中是透過Hash演算法儲存的,Hash的特徵是由KEY來計算儲存的,如果KEY可變,將會導致數據混亂。

>>> D = {1:3,&#39;vimiix&#39;:88}
>>> type(D)
<type &#39;dict&#39;>
登入後複製
>>> D={[1,2,3]:100}
Traceback (most recent call last):
 File "<pyshell#15>", line 1, in <module>
 D={[1,2,3]:100}
TypeError: unhashable type: &#39;list&#39; (这里提示list是不能被Hash计算的数据类型,因为list是可变的数据类型)
>>>
登入後複製

由此錯誤可以看出,字典的鍵只能使用不可變的物件(元祖是可以的),但是對於字典的值沒有此要求

鍵值對用冒號':'分割,每個對之間用逗號','分開,所有這些用花括號'{}'包含起來

字典中的鍵值對是沒有順序的,故不可以用索引訪問,只可以透過鍵取得所對應的值

拓展:如果定義的過程中,出現相同的鍵,最後儲存的時候回保留最後的一個鍵值對)

>>> D= {1:2,1:3}
>>> D
{1: 3}
登入後複製

建立與存取

第一種建立方式:直接透過花括號包含鍵值對來建立

第二種創建方式:利用內建函數dict()來創建,注意! dict()括號內只能有一個參數,要把所有的鍵值對括起來

#(1)

>>> D =dict((1,2),(3,4),(5,6))
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 D =dict((1,2),(3,4),(5,6))
TypeError: dict expected at most 1 arguments, got 3
>>> D =dict(((1,2),(3,4),(5,6)))
>>> D
{1: 2, 3: 4, 5: 6}
登入後複製

(2)還可以指定關鍵字參數

>>> D=dict(vimiix = &#39;VIMIIX&#39;)
>>> D
{&#39;vimiix&#39;: &#39;VIMIIX&#39;}
登入後複製

這裡的小寫'vimiix'不可以加單引號,加了會報錯!

(3)dict的內建方法.fromkeys 有兩個參數

>>> D = dict.fromkeys((1,&#39;vimiix&#39;),(&#39;common&#39;,&#39;value&#39;))
>>> D
{1: (&#39;common&#39;, &#39;value&#39;), &#39;vimiix&#39;: (&#39;common&#39;, &#39;value&#39;)}
>>>
登入後複製

在實際的生產過程中,都是使用字典生成式來創建,根據現有的資料來產生對應的數據,有數據才有意義。

字典生成式栗子:

>>> L1 = [1,2,3]
>>> L2 = [&#39;a&#39;,&#39;v&#39;,&#39;vimiix&#39;]
>>> D={a:b for a in L1 for b in L2}
>>> D
{1: &#39;vimiix&#39;, 2: &#39;vimiix&#39;, 3: &#39;vimiix&#39;}
登入後複製

這裡只是一個生成式的栗子,但並不是理想答案,待學習如何產生一一對應的鍵值對

字典內建的方法:

get() :

#取得鍵所對應的值,如果找不到回傳None,找到傳回對應的值

pop(key) :

彈出key對應的值,預設最後一個

popitem() :

隨機傳回並刪除字典中的一對鍵和值(項目)。為什麼是隨機刪除呢?因為字典是無序的,沒有所謂的「最後一項」或是其它順序。在工作時如果遇到需要逐一刪除項目的工作,用popitem()方法效率很高。

update() :

更新或新增一個鍵值對(有則改之無則加勉)

>>> D.update({&#39;newitem&#39;:&#39;update&#39;})
>>> D
{&#39;newitem&#39;: &#39;update&#39;, 1: &#39;vimiix&#39;, 2: &#39;vimiix&#39;, 3: &#39;vimiix&#39;}
登入後複製

總結

以上是關於Python中Tuple和Dict詳細解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板