Python 中的字典是Python中一個(gè)鍵值映射的數(shù)據(jù)結(jié)構(gòu),下面介紹一下如何優(yōu)雅的操作字典.
1.1 創(chuàng)建字典
Python有兩種方法可以創(chuàng)建字典,第一種是使用花括號(hào),另一種是使用內(nèi)建 函數(shù)dict
1
2
|
>>> info = {} >>> info = dict () |
1.2 初始化字典
Python可以在創(chuàng)建字典的時(shí)候初始化字典
1
2
|
>>> info = { "name" : 'cold' } >>> info = dict (name = 'cold' ) # 更優(yōu)雅 |
很明顯第二種方法更加的優(yōu)雅和減少一些特殊字符的輸入,但是有種情況第二種不能勝任
1
2
3
|
>>> key = 'name' >>> info = { key : 'cold' } # {'name':'cold'} >>> info = dict (key = 'cold' ) # {'key': 'cold'} |
明顯第二種方法就會(huì)引發(fā)一個(gè)不容易找到的bug
Python字典還有一種初始化方式,就是使用字典的fromkeys方法可以從列表中獲取元素作為鍵并用None或fromkeys方法的第二個(gè)參數(shù)初始化
1
2
3
4
5
6
7
8
9
|
>>> info = {}.fromkeys([ 'name' , 'blog' ]) >>> info { 'blog' : None , 'name' : None } >>> info = dict ().fromkeys([ 'name' , 'blog' ]) >>> info { 'blog' : None , 'name' : None } >>> info = dict ().fromkeys([ 'name' , 'blog' ], 'linuxzen.com' ) >>> info { 'blog' : 'linuxzen.com' , 'name' : 'linuxzen.com' } |
1.3 優(yōu)雅的獲取鍵值
字典可以這樣獲取到鍵的值
1
2
3
|
>>> info = { 'name' : 'cold' , 'blog' : 'linuxzen.com' } >>> info[ 'name' ] 'cold' |
但是如果獲取不存在的鍵的值就會(huì)觸發(fā)的一個(gè)KeyError異常,字典有一個(gè)get方法,可以使用字典get方法更加優(yōu)雅的獲取字典
1
2
3
4
5
6
7
|
>>> info = dict (name = 'cold' , blog = 'www.linuxzen.com' ) >>> info.get( 'name' ) 'cold' >>> info.get( 'blogname' ) None >>> info.get( 'blogname' , 'linuxzen' ) 'linuxzen' |
我們看到使用get方法獲取不存在的鍵值的時(shí)候不會(huì)觸發(fā)異常,同時(shí)get方法接收兩個(gè)參數(shù),當(dāng)不存在該鍵的時(shí)候就會(huì)返回第二個(gè)參數(shù)的值 我們可以看到使用get更加的優(yōu)雅
1.4 更新/添加
Python 字典可以使用鍵作為索引來(lái)訪問(wèn)/更新/添加值
1
2
3
4
5
6
7
|
>>> info = dict () >>> info[ 'name' ] = 'cold' >>> info[ 'blog' ] = 'linuxzen.com' >>> info { 'blog' : 'linuxzen.com' , 'name' : 'cold' } >>> info { 'blog' : 'linuxzen.com' , 'name' : 'cold night' } |
同時(shí)Python字典的update方法也可以更新和添加字典
1
2
3
4
5
6
7
|
>>> info = dict (name = 'cold' , blog = 'linuxzen.com' ) >>> info.update({ 'name' : 'cold night' , 'blogname' : 'linuxzen' }) >>> info { 'blog' : 'linuxzen.com' , 'name' : 'cold night' , 'blogname' : 'linuxzen' } >>> info.update(name = 'cold' , blog = 'www.linuxzen.com' ) # 更優(yōu)雅 >>> info { 'blog' : 'www.linuxzen.com' , 'name' : 'cold' , 'blogname' : 'linuxzen' } |
Python字典的update方法可以使用一個(gè)字典來(lái)更新字典,也可以使用參數(shù)傳遞類似dict函數(shù)一樣的方式更新一個(gè)字典,上面代碼中哦功能的第二個(gè)更加優(yōu)雅,但是同樣和dict函數(shù)類似,鍵是變量時(shí)也只取字面值
1.5 字典刪除
可以調(diào)用Python內(nèi)置關(guān)鍵字del來(lái)刪除一個(gè)鍵值
1
2
3
4
5
6
|
>>> info = dict (name = 'cold' , blog = 'linuxzen.com' ) >>> info { 'blog' : 'linuxzen.com' , 'name' : 'cold' } >>> del info[ 'name' ] >>> info { 'blog' : 'linuxzen.com' } |
同時(shí)也可以使用字典的pop方法來(lái)取出一個(gè)鍵值,并刪除
1
2
3
4
5
|
>>> info = dict (name = 'cold' , blog = 'linuxzen.com' ) >>> info.pop( 'name' ) 'cold' >>> info { 'blog' : 'linuxzen.com' } |
1.6 其他操作
獲取所有key
1
2
3
|
>>> info = dict (name = 'cold' , blog = 'linuxzen.com' ) >>> info.keys() [ 'blog' , 'name' ] |
獲取key,value并循環(huán)
1
2
3
4
5
6
|
>>> info = dict (name = 'cold' , blog = 'linuxzen.com' ) >>> for key, value in info.items(): ... print key, ':' , value ... blog : linuxzen.com name : cold |