久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python入門基礎(chǔ)(章四 字典)

 靜幻堂 2018-08-14
維也納的雨落 2018-08-13 19:02:19

1. 概念與創(chuàng)建字典

映射類型是一種關(guān)聯(lián)式的容器類型,它存儲了對象與對象之間的映射關(guān)系,。簡而言之就是通過名稱來訪問其各個值得數(shù)據(jù)結(jié)構(gòu),,這種數(shù)據(jù)結(jié)構(gòu)稱為映射。

字典的每個鍵值 key,,value 對用冒號 : 分割,,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中,,字典由鍵-值對稱為項(item) ,格式如下所示:

>>> d = {key1 : value1, key2 : value2 }

>>> dir = {'Jack' : 'US', 'Ammy' : 'China'}

字典是Python內(nèi)置映射類型,,其值不按順序排列,而是儲存在鍵值下,。鍵可以是數(shù),、字符串或元組。

對于字典來講索引是行不通的

Python入門基礎(chǔ)(章四 字典)

對字典進行索引

字典中鍵只有在值和類型完全相同的時候才視為一個鍵:

>>> dir = { 1 : 1 ,'1' :1} #dir[1]和dir['1']是不同的


2.函數(shù)dict

可以用函數(shù)dict從其他映射(如其他字典)或鍵-值對序列創(chuàng)建字典,。

Python入門基礎(chǔ)(章四 字典)

還可以用關(guān)鍵字實參來調(diào)用這函數(shù)

Python入門基礎(chǔ)(章四 字典)

---

3. 基本的字典操作

1. len(d):返回字典d包含的項(鍵-值對)數(shù),。

2. d(k):返回與鍵k相關(guān)聯(lián)的值。

3. d(k) = v:值v關(guān)聯(lián)到鍵k,。

4. del [k]:刪除鍵k的項,。

5. k in d:檢查字典d是否包含鍵k的項。

鍵的類型:字典中的鍵可以是整數(shù)也可以是非整數(shù),。字典中的鍵可以是任何不可變的值,,如浮點數(shù)、字符串或元組,。

自動添加:即使字典中原來沒有鍵,,也可以給它賦值,這將在字典中創(chuàng)建一個新項,。然而,,如果不適用append或其它方法,就不能給列表中原有的元素賦值,。

成員資格:表達式k in d(d是一個字典)查找的是鍵而不是值,,而表達式v in l(l 是一個列表)查找的是值而不是索引。

---

鍵可以是任何不可變的類型

Python入門基礎(chǔ)(章四 字典)

在嘗試給空列表索引42的元素,,但因為為沒有這種元素顯然是不可能的,。

字典中這么做一點問題也沒有,相當于在字典中添加了一個新項,。

4. 字典方法

①clear

刪除所有的字典項,,因此什么都不返回也可以說返回None

Python入門基礎(chǔ)(章四 字典)


clear基本用途

首先字典里包括了name以及名字jack,當我把x值賦值給y時,,顯然y和x是一樣的,。如果把x賦值為空,打印出來的x就為空字典,,但字典y還有內(nèi)容,。顯然如果這不是你想要的結(jié)果的話,用clear試試

---

用clear函數(shù)

Python入門基礎(chǔ)(章四 字典)

賦值

首先字典里包括了name以及名字jack,,當我把x值賦值給y時,,顯然y和x是一樣的。如果把x賦值為空,,打印出來的x就為空字典,,但字典y還有內(nèi)容。顯然如果這不是你想要的結(jié)果的話,,用clear試試

Python入門基礎(chǔ)(章四 字典)

clear清除

打印出來的字典x和y都為空


②copy

返回一個新字典,,其包含的鍵-值對與原來的字典相同(這種為淺復制,,因為值本身是原件,而非副本)

Python入門基礎(chǔ)(章四 字典)

當替換副本中的值,,原件不受影響,。但是如果修改副本的值(修改不是替換),原件也發(fā)生變化,,因為原件指向的也是被修改的值,。

---

為了避免上述的問題,可執(zhí)行深層拷貝,,用到copy模塊中的函數(shù)deepcopy

1. copy.copy 淺拷貝 只拷貝父對象,,不會拷貝對象的內(nèi)部的子對象。(比深拷貝更加節(jié)省內(nèi)存)

2. copy.deepcopy 深拷貝 拷貝對象及其子對象

用一個簡單的例子說明如下:

>>>import copy

>>>a = [1, 2, 3, 4, ['a', 'b', 'c']]

>>> b = a

>>> c = copy.copy(a)

>>> d = copy.deepcopy(a)

很容易理解:a是一個列表,,表內(nèi)元素a[4]也是一個列表(也就是一個內(nèi)部子對象),;b是對a列表的又一個引用,所以a,、b是完全相同的,可以通過id(a)==id(b)證明,。

第4行是淺拷貝,,第五行是深拷貝,通過id(c)和id(d)可以發(fā)現(xiàn)他們不相同,,且與id(a)都不相同:

>>> id(a)

19276104

>>> id(b)

19276104

>>> id(c)

19113304

>>> id(d)

19286976


至于如何看深/淺拷貝的區(qū)別,,可以通過下面的操作來展現(xiàn):

>>> a.append(5) #操作1

>>> a[4].append('hello') #操作2


這時再查看結(jié)果:

>>> a

[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]

>>> b

[1, 2, 0, 4, ['a', 'b', 'c', 'hello'], 5]

>>> c

[1, 2, 3, 4, ['a', 'b', 'c', 'hello']]

>>> d

[1, 2, 3, 4, ['a', 'b', 'c']]

可以發(fā)現(xiàn)a、b受了操作1,、2的影響,,c只受操作2影響,d不受影響,。a,、b結(jié)果相同很好理解。由于c是a的淺拷貝,,只拷貝了父對象,,因此a的子對象( ['a', 'b', 'c', 'hello'])改變時會影響到c;d是深拷貝,,完全不受a的影響,。


③get

如果試圖訪問字典中沒有的元素,將引發(fā)錯誤,。

Python入門基礎(chǔ)(章四 字典)


如果使用get將不會發(fā)生錯誤

Python入門基礎(chǔ)(章四 字典)


用get元素沒有引發(fā)異常,,而是返回None。而且可以指定值而不是None

Python入門基礎(chǔ)(章四 字典)


④items

返回一個包含所有字典項的列表,,其中每個元素都為(key,,value)的形式,,字典項目在列表中排列順序不確定。

Python入門基礎(chǔ)(章四 字典)


還可以對長度進行檢查

>>> it= d.items()

>>> len(it)

> 3


⑤pop

獲取與指定鍵相關(guān)的值,,并將該鍵-值對從字典中刪除

>>> d = {'x':1,'y':2}

>>> d.pop(x)

> 1

>>> d

> {'y':2}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多