python字典
概念:字典是另一種可變?nèi)萜黝愋停铱纱鎯?chǔ)任意類型對(duì)象,如其他容器類型。
字典由鍵和對(duì)應(yīng)值成對(duì)組成。字典也被稱作關(guān)聯(lián)數(shù)組或哈希表。理解好一一對(duì)應(yīng)的
關(guān)系很重要
1. 掌握字典類型
a) 字典的特點(diǎn)
無序: 通過鍵實(shí)現(xiàn)元素存取,故無序
可變:可以通過鍵進(jìn)行改變值
異構(gòu):支持多種數(shù)據(jù)類型
嵌套:可以在鍵值對(duì)中的值部分出現(xiàn)字典
b) 定義字典:
ii. 方法一:{key1:value1,key2:value2,...}
iii. 方法二:dict()內(nèi)置函數(shù):指定鍵值
例:d2=dict(name="jerry",age="45",gender="m")
iv. 關(guān)鍵點(diǎn):
鍵與值用冒號(hào)“:”分開;
項(xiàng)與項(xiàng)用逗號(hào)“,”分開;
字典中的鍵必須是唯一的,而值可以不唯一
實(shí)例:
dict = {'Alice': '16', ' MadKing ': '17', 'Cecil': '18'}
dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 } 嵌套定義
訪問字典里的值
把相應(yīng)的鍵放入熟悉的方括弧,如下實(shí)例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Name']: ", dict['Name']; print "dict['Age']: ", dict['Age']; |
如果用字典里沒有的鍵訪問數(shù)據(jù),會(huì)輸出錯(cuò)誤如下:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Alice']: ", dict['Alice']; |
以上實(shí)例輸出結(jié)果:
1 2 3 4 5 | dict['Zara']: Traceback (most recent call last): File "test.py", line 4, in <module> print "dict['Alice']: ", dict['Alice']; KeyError: 'Alice' |
修改字典
向字典添加新內(nèi)容的方法是增加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)如下實(shí)例:
1 2 3 4 5 6 7 8 9 10 | #coding:utf8 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; dict['Age'] = 8; # update existing entry dict['School'] = "DPS School"; # Add new entry print "dict['Age']: ", dict['Age']; print "dict['School']: ", dict['School']; |
以上實(shí)例輸出結(jié)果:
1 2 | dict['Age']: 8 dict['School']: DPS School |
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項(xiàng)操作。
顯示刪除一個(gè)字典用del命令,如下實(shí)例:
#coding:utf8 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; del dict['Name']; # 刪除鍵是'Name'的條目 dict.clear(); # 清空詞典所有條目 del dict ; # 刪除詞典 print "dict['Age']: ", dict['Age']; print "dict['School']: ", dict['School']; |
但這會(huì)引發(fā)一個(gè)異常,因?yàn)橛胐el后字典不再存在:
1 2 3 4 5 | dict['Age']: Traceback (most recent call last): File "test.py", line 8, in <module> print "dict['Age']: ", dict['Age']; TypeError: 'type' object is unsubscriptable |
注意:刪除元素盡量用字典內(nèi)置方法,不需要直接del,后面會(huì)討論。
字典鍵的特性
字典值可以沒有限制地取任何python對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶定義的,但鍵不行。
兩個(gè)重要的點(diǎn)需要記住:
1)不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住,如下實(shí)例:
1 2 3 4 5 | #coding:utf8 dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}; print "dict['Name']: ", dict['Name']; |
以上實(shí)例輸出結(jié)果:
1 | dict['Name']: Manni |
2)鍵必須不可變,所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行,如下實(shí)例:
1 2 3 4 5 | #coding:utf8 dict = {['Name']: 'Zara', 'Age': 7}; print "dict['Name']: ", dict['Name']; |
以上實(shí)例輸出結(jié)果:
1 2 3 4 | Traceback (most recent call last): File "test.py", line 3, in <module> dict = {['Name']: 'Zara', 'Age': 7}; TypeError: list objects are unhashable |
掌握字典相關(guān)方法
1.1 添加元素:dict1[key] = value
例如:
1.2 items():變量解包:即將字典轉(zhuǎn)化為鍵、值作為元組的列表
例如:
dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.items() Value : [('Age', 7), ('Name', 'Zara')]
1.3 keys();鍵列表
例如:
1.4 values():值列表
例如:
1.5 has_key():判斷是否存在某個(gè)鍵,返回結(jié)果true 或false
例如:
1.6 len():取得字典中鍵值對(duì)個(gè)數(shù)
例如:
1.7 update():在原字典上合并字典,鍵相同時(shí)會(huì)被覆蓋。
例如:
1.8 get():取得某個(gè)鍵對(duì)應(yīng)的值
例如:
1.9 pop():彈出指定鍵對(duì)應(yīng)的值
1.10 popitem():隨機(jī)彈出鍵值對(duì)
1.11 clear():清除所有元素
例如:
2. 掌握字典的遍歷:
概念:Python的元組與列表類似,也是一種容器類型,不同之處在于元組的元素不能修改。 元組使用小括號(hào),列表使用方括號(hào)。
Python的元組與列表類似,不同之處在于元組的元素不能修改。
特點(diǎn):支持異構(gòu);
支持嵌套;
不可變
元組使用小括號(hào),列表使用方括號(hào)。
元組創(chuàng)建很簡單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開即可。
如下實(shí)例:
1 2 3 | tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; |
創(chuàng)建空元組
tup1 =(); |
元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號(hào)
tup1 =(50,); |
元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取,組合等。
訪問元組
元組可以使用下標(biāo)索引來訪問元組中的值,如下實(shí)例:
tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5, 6, 7 ); print "tup1[0]: ", tup1[0] print "tup2[1:5]: ", tup2[1:5] |
以上實(shí)例輸出結(jié)果:
tup1[0]: physics tup2[1:5]: [2, 3, 4, 5] |
修改元組
元組中的元素值是不允許修改的,但我們可以對(duì)元組進(jìn)行連接組合,如下實(shí)例:
tup1 = (12, 34.56); tup2 = ('abc', 'xyz'); # 以下修改元組元素操作是非法的。 # tup1[0] = 100; # 創(chuàng)建一個(gè)新的元組 tup3 = tup1 + tup2; print tup3; |
以上實(shí)例輸出結(jié)果:
(12, 34.56, 'abc', 'xyz') |
刪除元組
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個(gè)元組,如下實(shí)例:
tup = ('physics', 'chemistry', 1997, 2000); print tup; del tup; print "After deleting tup : " print tup; |
以上實(shí)例元組被刪除后,輸出變量會(huì)有異常信息,輸出如下所示:
1 2 3 4 5 6 | ('physics', 'chemistry', 1997, 2000) After deleting tup : Traceback (most recent call last): File "test.py", line 9, in <module> print tup; NameError: name 'tup' is not defined |
元組運(yùn)算符
與字符串一樣,元組之間可以使用 + 號(hào)和 * 號(hào)進(jìn)行運(yùn)算。這就意味著他們可以組合和復(fù)制,運(yùn)算后會(huì)生成一個(gè)新的元組。
Python 表達(dá)式 | 結(jié)果 | 描述 |
len((1, 2, 3)) | 3 | 計(jì)算元素個(gè)數(shù) |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 連接 |
['Hi!'] * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 復(fù)制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
元組索引,截取
因?yàn)樵M也是一個(gè)序列,所以我們可以訪問元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
元組:
L =('spam', 'Spam', 'SPAM!') |
Python 表達(dá)式 | 結(jié)果 | 描述 |
L[2] | 'SPAM!' | 讀取第三個(gè)元素 |
L[-2] | 'Spam' | 反向讀??;讀取倒數(shù)第二個(gè)元素 |
L[1:] | ['Spam', 'SPAM!'] | 截取元素 |
無關(guān)閉分隔符
任意對(duì)象 以逗號(hào)隔開,默認(rèn)為元組,如下實(shí)例:
print 'abc', -4.24e93, 18+6.6j, 'xyz'; x, y = 1, 2; print "Value of x , y : ", x,y; |
元組內(nèi)置函數(shù)
Python元組包含了以下內(nèi)置函數(shù)
序號(hào) | 方法及描述 |
1 | len(t) 計(jì)算元組元素個(gè)數(shù)。
|
2 | max(t) 返回元組中元素最大值。
|
3 | min(t) 返回元組中元素最小值。
|
4 | tuple(li) 將列表轉(zhuǎn)換為元組
|
5 | index():返回指定元素第一次出現(xiàn)的索引位置 count():指定元素出現(xiàn)的次數(shù) 例如:
|
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: