今天學習了字典的使用, 所謂的字典其實就是鍵值對數據, 一個字典里面有唯一的Key對應一個value,Key是唯一的,Value不唯一. 在.net添加相同的Key會報錯,在Python,若出現相同的Key,后面Key的value將會覆蓋前面的數據.
一.字典的基本用法.
1.字典的創建: 字段的創建格式是{key:Value,Key:Value},也可以通過,dict函數轉換。
Note:key的順序按照字符串從小到大排序;如果聲明字典的時候有相同的Key,取最后一個。(有別于.net)
>>> dic1={'Name':'Hardy','Age':24}>>> dic1{'Age': 24, 'Name': 'Hardy'}>>> imtes=[('Name','Frank'),('Age',23)]>>> dic = dict(imtes);>>> dic{'Age': 23, 'Name': 'Frank}
>>> dic2={'Name':'Hardy','Age':24,'Name':'Frank'} #第一個被覆蓋了
>>> dic2
{'Age': 24, 'Name': 'Frank'}2.字典的基本使用
>>> imtes=[('Name','Frank'),('Age',23)]>>> dic = dict(imtes);>>> dic{'Age': 23, 'Name': 'Frank'}>>> len(dic) #長度2>>> 'Age' in dic #判斷是否有Key存在True>>> dic['Age'] = 22 #修改值>>> dic{'Age': 22, 'Name': 'Frank'} >>> del dic['Age'] #刪除某個元素>>> dic{'Name': 'Frank'}
3.字典的格式化.
在前面合計將了兩種格式化,一種通過元組格式化數據,還有一種是通過template模板來使用字典格式化數據. 下面來解釋字典格式化數據.
>>> workMsg = {'Frank':'Coder','Nancy':'HR','Vincent':'PRoject Manager'}>>> 'Frank is the %(Frank)s' %workMsg'Frank is the Coder'二. 字典內部提供方法的使用.
1.Clear方法: 在使用Clear方法的時候大家請看下面三個例子.
Note:表面上通過dic={}是清空數據。
第一個案例:dicTestB1和dicTestA1都指向同一個空間。可是對于dicTestA1={}操作,其實是開辟了一個新空間,dicTest1指向了{}對應的空間,所以dicTestB1還是保留原來數據.
第二個案例: dicTestB2和dicTestA1指向同一個空間. 可是dicTestA1.clear()是對當前空間清空,沒有產生其他新的空間,所以dicTestB2也沒有數據了.
第三個案例: 因為調用了copy()方法,其實在dicTestB3=dicTestA3.copy()時就開辟了新空間,那么dicTestB3和dicTestA3已經毫無相關了,所以dicTestA3任何操作不影響dicTextB3值
>>> dicTestA1 = {'Name':'Frank'}>>> dicTestB1 = dicTestA1>>> dicTest1={}>>> dicTest1{}>>> dicTestB1{'Name': 'Frank'}>>> >>> dicTestA2={'Name':'Frank'}>>> dicTestB2=dicTestA2>>> dicTestA2.clear()>>> dicTestB2{}>>> >>> dicTestA3={'Name':'Frank'}>>> dicTestB3=dicTestA3>>> dicTestB3 = dicTestA3.copy()>>> dicTestA3.clear()>>> dicTestA3={}>>> dicTestB3{'Name': 'Frank'}2.fromkeys: 為字典添加values為空的key.
>>> {}.fromkeys(['Name','Age']){'Age': None, 'Name': None}}
>>> {}.fromkeys(['Name','Age'],'Unkown')
{'Age': 'Unkown', 'Name': 'Unkown'}
>>> 3. has_key() 和key in dic一樣判斷是否包含key
4. items 和 iteritems: 獲取字典元素列表,用于字典的遍歷,類是于.net的keyvaluepair<key,value>,后者是通過迭代器實現的.一般來說迭代器的效率更高.
>>> workMsg = {'Frank':'Coder','Nancy':'HR','Vincent':'Project Manager'}>>> workMsg.items()[('Frank', 'Coder'), ('Vincent', 'Project Manager'), ('Nancy', 'HR')]>>> list(workMsg.iteritems())[('Frank', 'Coder'), ('Vincent', 'Project Manager'), ('Nancy', 'HR')]>>> 5.keys和iterkeys 以及 values和itervalues 分別實現后去key列表和values列表.
6.pop(key) 和 popitem 以及del 實現對字段元素的刪除
7.update(parma) 一個字典更新另一個字典.
三. 總結:
整體來說,字典還是挺簡單的. 不過對于里面調用方法的clear()以及update()都是對當前內存的數據進行操作,如果單獨通過=來賦值也可以達到更新效果,其實原理是不一樣,
=號相當于丟棄以前數據重新在新的內存存儲。這個有點類是于我們常常對數據庫的數據進行更新,可以通過update來實現,也可以通過delete和add來實現的原理差不多.
新聞熱點
疑難解答