官术网_书友最值得收藏!

5.3 字典方法

像其他內建類型一樣,字典也有方法,這些方法非常有用,不過可能不像使用列表或字符串一樣頻繁使用。學習本節時可以先簡單了解一下有哪些方法可以使用,然后在需要時回過頭來查看特定方法的具體用法。

5.3.1 clear()方法

clear()方法用于刪除字典內的所有項。

clear()方法的語法如下:

dict.clear()

此語法中,dict代表指定字典,該方法不需要參數。該函數是一個原地操作(類似于list.sort)函數,沒有任何返回值(返回值為None)。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002', '小強': '1005','小張': '1006'}
     >>> print('字典元素個數為:%d個' % len(student))
     字典元素個數為:4個
     >>> student.clear()
     >>> print('字典刪除后元素個數為:%d個' % len(student))
     字典刪除后元素個數為:0個

由輸出結果可知,字典調用clear方法后整個字典內所有項都被刪除。

下面看兩個示例。

示例1:

     >>> x={}
     >>> y=x
     >>> x['key']='value'
     >>> y
     {'key': 'value'}
     >>> x={}
     >>> y
     {'key': 'value'}

示例2:

     >>> x={}
     >>> y=x
     >>> x['key']='value'
     >>> y
     {'key': 'value'}
     >>> x.clear()
     >>> y
     {}

兩個示例中,x和y最初對應同一個字典。示例1中,通過將x關聯到一個新的空字典對它重新賦值,這對y沒有任何影響,還關聯到原先的字典。若想清空原始字典中所有元素,則必須使用clear方法,使用clear后,y的值也被清空了。

5.3.2 copy()方法

copy()方法返回一個具有相同鍵/值對的新字典。這個方法是淺復制(shallow copy),因為值本身是相同的,而不是副本。

copy()方法的語法如下:

dict.copy()

此語法中,dict代表指定字典,該方法不需要參數。返回結果為一個字典的淺復制。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002', '小強': '1005','小張': '1006'}
     >>> st=student.copy()
     >>> print('復制后得到的st為:',st)
     復制后得到的st為: {'小強': '1005', '小萌': '1001', '小智': '1002', '小張': '1006'}

由輸出結果看到,使用copy方法可以將字典復制給另一個變量。

我們可以通過下面的示例了解什么是淺復制。

     >>> student={'小智': '1002', 'info':['小張','1006','man']}
     >>> st=student.copy()
     >>> st['小智']='1005'
     >>> print('更改copy后的st為:',st)
     更改copy后的st為: {'info': ['小張', '1006', 'man'], '小智': '1005'}
     >>> print('原字符串為::',student)
     原字符串為:: {'info': ['小張', '1006', 'man'], '小智': '1002'}
     >>> st['info'].remove('man')
     >>> print('刪除后st為:',st)
     刪除后st為: {'info': ['小張', '1006'], '小智': '1005'}
     >>> print('刪除后student為:',student)
     刪除后student為: {'info': ['小張', '1006'], '小智': '1002'}

由輸出結果看到,替換副本的值時原始字典不受影響。如果修改了某個值(原地修改,不是替換),原始字典就會改變,因為同樣的值也在原字典中。以這種方式進行復制就是淺復制,而使用深復制(deep copy)可以避免該問題,此處不做講解,有興趣的讀者可以自己查找相關資料。

5.3.3 fromkeys()方法

fromkeys()方法用于創建一個新字典。

fromkeys()方法的語法如下:

dict.fromkeys(seq[, value]))

此語法中,dict代表指定字典;seq代表字典鍵值列表;value代表可選參數,設置鍵序列(seq)的值。該方法返回結果為列表。

該方法使用示例如下:

     >>> seq = ('name', 'age', 'sex')
     >>> info = dict.fromkeys(seq)
     >>> print ("新的字典為 : %s" %  info)
     新的字典為 : {'name': None, 'sex': None, 'age': None}
     >>> info = dict.fromkeys(seq, 10)
     >>> print ("新的字典為 : %s" %  info)
     新的字典為 : {'name': 10, 'sex': 10, 'age': 10}

由輸出結果看出,fromkeys方法使用給定的鍵建立新字典,每個鍵默認對應的值為None。

5.3.4 get()方法

get()方法返回指定鍵的值,如果值不在字典中,就返回默認值。

get()方法的語法如下:

dict.get(key, default=None)

此語法中,dict代表指定字典,key代表字典中要查找的鍵,default代表指定鍵的值不存在時返回默認值。該方法返回結果為指定鍵的值,如果值不在字典中,就返回默認值None。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print ('小萌的學號為: %s' %  student.get('小萌'))
     小萌的學號為: 1001

由輸出結果看到,get方法使用起來比較簡單。再看如下示例:

     >>> st={}
     >>> print(st['name'])
     Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
     KeyError: 'name'
     >>> print(st.get('name'))
     None
     >>> print('name的值為:%s' % st.get('name'))
     name的值為:None

由輸出結果看到,以其他方法試圖訪問字典中不存在的項時會出錯,而使用get方法就不會。使用get方法訪問一個不存在的鍵時,返回None。這里可以自定義默認值,用于替換None,例如:

     >>> st={}
     >>> print('name的值為:%s' % st.get('name','未指定'))
     name的值為:未指定

由輸出結果看到,輸出結果中用“未指定”替代了None。

5.3.5 key in dict方法

Python字典in操作符用于判斷鍵是否存在于字典中,如果鍵在字典dict中就返回true,否則返回false。

該方法的語法如下:

key in dict

此語法中,dict代表指定字典,key代表要在字典中查找的鍵。如果鍵在字典里就返回true,否則返回false。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print('小萌在student字典中:%s'%('小萌' in student))
     小萌在student字典中:True
     >>> print('小強在student字典中:%s'%('小強' in student))
     小強在student字典中:False

由輸出結果看到,已返回對應的True或False。

該方法是Python 3中的方法。在Python 2中有一個有相同功能的方法——has_key方法,has_key方法的使用方式和in不同。

5.3.6 items()方法

items()方法以列表返回可遍歷的(鍵/值)元組數組。

items()方法的語法如下:

dict.items()

此語法中,dict代表指定字典,該方法不需要參數。返回結果為可遍歷的(鍵/值)元組數組。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print('調用items方法的結果:%s'% student.items())
     調用items方法的結果:dict_items([('小萌', '1001'), ('小智', '1002')])

由輸出結果看到,返回結果為一個元組數組。

在Python 2中提供了一個iteritems方法,該方法和items方法的作用大致相同,但是iteritems方法返回的是一個迭代器對象,而不是列表。在Python 3中沒有iteritems方法。

5.3.7 keys()方法

keys()方法以列表返回一個字典的所有鍵。

keys()方法的語法如下:

dict.keys()

此語法中,dict代表指定字典,該方法不需要參數。返回結果為一個字典的所有鍵。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print('字典student所有鍵為:%s'% student.keys())
     字典student所有鍵為:dict_keys(['小萌', '小智'])

由輸出結果看到,返回的是一個元組數組,數組中包含字典的所有鍵。

5.3.8 setdefault()方法

setdefault()方法和get()方法類似,用于獲得與給定鍵相關聯的值。如果鍵不存在于字典中,就會添加鍵并將值設為默認值。

setdefault()方法的語法如下:

dict.setdefault(key, default=None)

此語法中,dict代表指定字典,key代表查找的鍵值,default代表鍵不存在時設置的默認鍵值。該方法沒有任何返回值。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print('小強的鍵值為:%s'% student.setdefault('小強'))
     小強的鍵值為:None
     >>> print('小智的鍵值為:%s'% student.setdefault('小智'))
     小智的鍵值為:1002
     >>> print('student字典新值為:%s'% student)
     student字典新值為:{'小強': None, '小萌': '1001', '小智': '1002'}

由輸出結果看到,當鍵不存在時,setdefault方法返回默認值并更新字典;如果鍵存在,就返回與其對應的值,不改變字典。和get一樣,默認值可以選擇,如果不設定就使用None,如果設定就使用設定的值,例如:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> print('小強的鍵值為:%s'% student.setdefault('小強'))
     小強的鍵值為:None
     >>> print('小zhang的鍵值為:%s'% student.setdefault('小zhang','1006'))
     小zhang的鍵值為:1006

由輸出結果看到,小強沒有設置值,使用的是默認值,輸出鍵值為None;小zhang設置的默認值是1006,輸出鍵值為1006。

5.3.9 update()方法

update()方法用于把字典dict2的鍵/值對更新到dict里。

update()方法的語法如下:

dict.update(dict2)

此語法中,dict代表指定字典,dict2代表添加到指定字典dict里的字典。該方法沒有任何返回值。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002'}
     >>> student2={'小李':'1003'}
     >>> print('原student字典為:%s'% student)
     原student字典為:{'小萌': '1001', '小智': '1002'}
     >>> student.update(student2)
     >>> print('新student字典為:%s'% student)
     新student字典為:{'小李': '1003', '小萌': '1001', '小智': '1002'}
     >>> student3={'小李':'1005'}
     >>> student.update(student3)  #對相同項覆蓋
     >>> print('新student字典為:%s'% student)
     新student字典為:{'小李': '1005', '小萌': '1001', '小智': '1002'}

由輸出結果看到,提供的字典中的項被添加到舊字典中,如果有相同的鍵就會覆蓋。

5.3.10 values()方法

values()方法以列表形式返回字典中的所有值。與返回鍵的列表不同,返回的列表中可以包含重復的元素。

values()方法的語法如下:

dict.values()

此語法中,dict代表指定字典,該方法不需要參數。返回結果為字典中的所有值。

該方法使用示例如下:

     >>> student={'小萌': '1001', '小智': '1002','小李':'1001'}
     >>> print('student字典所有值為:%s'% list(student.values()))
     student字典所有值為:['1001', '1001', '1002']

由輸出結果看到,返回的列表中包含重復的元素。

主站蜘蛛池模板: 宕昌县| 阿克| 彭州市| 海淀区| 延津县| 孝感市| 涪陵区| 郓城县| 奉新县| 中西区| 大方县| 武冈市| 莱芜市| 留坝县| 望奎县| 麟游县| 育儿| 旌德县| 界首市| 商都县| 恩平市| 白山市| 克东县| 喀喇沁旗| 柏乡县| 东明县| 彭山县| 松桃| 隆林| 蒙山县| 宁晋县| 淮滨县| 太康县| 阿图什市| 城固县| 巴楚县| 遵化市| 平定县| 高尔夫| 阳原县| 洞口县|