人生苦短,我選Pythonpython
前文傳送門git
小白學 Python(1):開篇github
(若是是來看錶情包的,能夠退出去了,本篇無表情包)
字典提供了不少內置方法對字典進行操控。
老規矩,一邊看代碼一邊介紹。
做用: 返回一個迭代器,可使用 list() 來轉換爲列表,該列表包含全部的 key。
dict1 = {'name': 'geekdigging', 'age': 2} print(dict1.keys()) print(list(dict1.keys())) print(type(list(dict1.keys())))
結果以下:
dict_keys(['name', 'age']) ['name', 'age'] <class 'list'>
做用: 返回一個迭代器,可使用 list() 來轉換爲列表,該列表包含全部的 value 。
print(dict1.values()) print(list(dict1.values())) print(type(list(dict1.values())))
結果以下:
dict_values(['geekdigging', 2]) ['geekdigging', 2] <class 'list'>
做用: 以列表返回可遍歷的(鍵, 值) 元組數組。
print(dict1.items()) print(list(dict1.items())) print(type(list(dict1.items())))
結果以下:
dict_items([('name', 'geekdigging'), ('age', 2)]) [('name', 'geekdigging'), ('age', 2)] <class 'list'>
做用: 返回指定鍵的值,若是值不在字典中返回 default(None) 值。
print(dict1.get('name')) print(dict1.get('geekdigging'))
結果以下:
geekdigging None
由於 geekdigging
並非字典中的 key ,因此返回了默認值 None 。
做用: 刪除字典給定鍵 key 所對應的值,返回值爲被刪除的值。key值必須給出。
print(dict1.pop('age')) print(dict1)
結果以下:
2 {'name': 'geekdigging'}
做用: 和get()相似, 但若是鍵不存在於字典中,將會添加鍵並將值設爲 default 。
dict1.setdefault('age') print(dict1)
結果以下:
{'name': 'geekdigging', 'age': None}
做用: 把字典 dict2 的鍵/值對更新到 dict 裏。
dict2 = {'sex': 'male'} dict1.update(dict2) print(dict1)
結果以下:
{'name': 'geekdigging', 'age': None, 'sex': 'male'}
做用: 刪除字典內全部元素。
注意: 刪除字典內全部元素,並不是刪除字典。
dict2.clear() print(dict2)
結果以下:
{}
做用: 返回一個字典的淺複製。
注意: 這裏的 copy 是淺 copy ,有編程經驗的同窗估計理解起來並沒有難度。無經驗的同窗且聽我慢慢道來,淺拷貝本質上拷貝的是一個引用,並不是拷貝了整個內容,舉例子的話就比如我有一個蘋果,而且淺拷貝了一個給小明,我咬了一口個人蘋果,可是小明發現他的蘋果也被咬了一口。
dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]} # 淺拷貝: 引用對象 dict4 = dict3 print(id(dict3)) print(id(dict4)) # 淺拷貝:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,仍是引用 dict5 = dict3.copy() dict3['age'].remove(1) print(dict3) print(dict5) print(id(dict3)) print(id(dict5))
結果以下:
2418990911064 2418990911064 {'name': 'geekdigging', 'age': [2, 3]} {'name': 'geekdigging', 'age': [2, 3]} 2418990911064 2418991599688
這個示例理解稍有費勁兒,不着急,慢慢品,細品。
若是我想全都深 copy ,怎麼作呢?
能夠引入 copy 模塊實現。
import copy dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]} dict6 = copy.deepcopy(dict3) dict3['age'].remove(1) print(dict3) print(dict6) print(id(dict3)) print(id(dict6))
結果以下:
{'name': 'geekdigging', 'age': [2, 3]} {'name': 'geekdigging', 'age': [1, 2, 3]} 2418991602168 2418991602008
初次接觸的同窗,以上兩個示例並很差理解,若是在理解上有問題的能夠在公衆號留言問我。
老生常談再多 BB 一句,請各位同窗親自動手實踐一下示例代碼。
本系列的全部代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便你們取用。