Python中字典的基礎知識歸納小結
定義一個字典
>>> d = {"server":"mpilgrim", "database":"master"} 1
>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["server"] 2
'mpilgrim'
>>> d["database"] 3
'master'
>>> d["mpilgrim"] 4
Traceback (innermost last):
File "<interactive input>", line 1, in ?
KeyError: mpilgrim
首先,我們創(chuàng)建了一個擁有兩個元素的新字典,并將其賦值給變量 d。每一個元素都是一個鍵-值對,整個元素集合用大括號括起來。
server 是一個鍵字,它所關聯(lián)的值為 mpilgrim,用 d["server"] 來引用。
database 是一個鍵字,它所關聯(lián)的值為 master,用 d["database"] 來引用。
你可以通過鍵字來得到值,但是不能通過值得到鍵字。所以 d["server"] 為 mpilgrim,但是使用 d["mpilgrim"] 會引發(fā)一個異常,因為 mpilgrim 不是一個鍵字。
修改一個字典
>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["database"] = "pubs" 1
>>> d
{'server': 'mpilgrim', 'database': 'pubs'}
>>> d["uid"] = "sa" 2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
不能在一個字典中有重復的鍵字。給一個存在的鍵字賦值會抹掉原來的值。
可以在任何時候加入新的鍵-值對。這種語法同修改存在的值一樣。(是的,它可能某天會給你帶來麻煩,你可能認為增加了新值,但實際上只是反復地修改了同樣的值,因為你的鍵字沒有按照你的想象改變。)
注意新的元素(鍵字為 uid,值為 sa)出現(xiàn)在字典中間。實際上,它只不過是一種巧合,在第一個例子中的元素看上去是有序的?,F(xiàn)在它們看上去無序了則更是一種巧合。
Note
字典沒有元素順序的概念。說元素順序亂了是不正確的,它們只是簡單的無序。這是一個重要的特性,它會在你想要以一種特定的,可重復的順序(象以鍵字的字母表順序)存取字典元素的時候騷擾你。有一些實現(xiàn)的方法,它們只是沒有加到字典中去。
在字典中混用數(shù)據(jù)類型
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
>>> d["retrycount"] = 3 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d[42] = "douglas" 2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
字典不是只用于字符串。字典的值可以是任意數(shù)據(jù)類型,包括字符串,整數(shù),對象,或者甚至其它的字典。在一個單個字典里,字典的值并不需要全都是同一數(shù)據(jù)類型,可以根據(jù)需要混用和配匹。
字典的關鍵字要嚴格一些,但是它們可以是字符串,整數(shù)和幾種其它的類型(后面還會談到這一點)。也可以在一個字典中混用和配匹關鍵字。
從字典中刪除元素
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
>>> del d[42] 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d.clear() 2
>>> d
{}
del 允許你根據(jù)鍵字將單個元素從字典中刪除。
clear 會刪除一個字典中所有元素。注意空的大括號所表示的集合說明一個字典沒有元素。
字符串是大小寫敏感
>>> d = {}
>>> d["key"] = "value"
>>> d["key"] = "other value" 1
>>> d
{'key': 'other value'}
>>> d["Key"] = "third value" 2
>>> d
{'Key': 'third value', 'key': 'other value'}
將一個值賦給一個存在的字典關鍵字只是簡單的用新值替換舊值。
這樣做不會將一個值賦給一個存在的字典關鍵字,因為在Python中字符串是大小寫敏感的,所以 'key' 與 'Key' 是不同的。這樣就在字典中生成了一個新的鍵/值對。對你來說可能差不多,但對于Python來說,完全是不同的。
如何訪問字典中的值:
>>> dict2 = {'name':'earth','port':80}
>>> for key in dict2.keys():
... print 'key=%s,value=%s' %(key,dict2[key])
...
key=name,value=earth
key=port,value=80
>>> for key in dict2:
... print 'key=%s,value=%s' %(key,dict2[key])
...
key=name,value=earth
key=port,value=80
獲取字典某個元素值:
>>> dict2['name'] 'earth' >>> print 'host %s is running on port %d' %(dict2['name'],dict2['port']) host earth is running on port 80
檢查字典中是否有某個鍵的方法 has_key()或in,not in
>>> 'name' in dict2
True
>>> 'server' in dict2
False
>>> 'name' in dict2
True
>>> dict2['name']
'earth'
>>> dict2.has_key('server')
False
>>> dict2.has_key('name')
True
一個字典中混用數(shù)字和字符串的例子:
>>> dict3 = {}
>>> dict3[1] = 'abc'
>>> dict3['1'] = 3.14159
>>> dict3[3.2] = 'xyz'
>>> dict3
{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}
整體賦值:
>>> dict3 = {'1': 3.14159, 1: 'abc', 3.2: 'xyz',33:'hehe'}
>>> dict3
{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}
更新字典:
>>> dict2['name'] = 'venus' >>> dict2['port'] = 6969 >>> dict2['arch'] = 'sunos5' >>> print 'host %(name)s is running on port %(port)d' %dict2 host venus is running on port 6969
刪除字典元素和字典
>>> dict2
{'arch': 'sunos5', 'name': 'venus', 'port': 6969}
>>> del dict2['name']
>>> dict2
{'arch': 'sunos5', 'port': 6969}
>>> dict2.clear()
>>> dict2
{}
>>> del dict2
>>> dict2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict2' is not defined
>>> dict3
{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}
>>> dict3.pop(33)
'hehe'
>>> dict3
{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}
注:避免使用內(nèi)建對象名字作為變量的標識符
類似: dict,list,file,bool,str,input,len
相關文章
解決Pyinstaller打包為可執(zhí)行文件編碼錯誤的問題
這篇文章主要介紹了解決Pyinstaller打包為可執(zhí)行文件編碼錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法
這篇文章主要介紹了python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
解決pycharm中導入自己寫的.py函數(shù)出錯問題
今天小編就為大家分享一篇解決pycharm中導入自己寫的.py函數(shù)出錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

