教表弟學了半個月的Python!他居然才學會字典!五分鐘學會的東西
今天不是禮拜五嘛。我姑媽帶著我表弟來到我家玩!然後和我媽嘮嗑嘛!然後就扯到我的工作上面來了!我就是一個小萌新,大佬帶著能拿個10k左右,所以我姑媽就問起了我這個行業,我說了大大小小一堆,然後他們估計也聽不懂!我表弟呢,是個高中畢業就沒上學了的小老弟。給他姑媽守守小賣部的, 所以文化水平嘛。不算高不算低。但是沒有一份工作,她就想要表弟也像我一樣,能找個好企業,鍛鍊一下,然後就喊我跟著我學一下,我也沒辦法。只能耐著性子教咯!然後半個月下來,我才發現他比我想象的有點差別!這是我給他的資料的一小部分,我覺得很通俗易懂了啊!沒有比這個資料還小白了吧!
什麼是字典?
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。
一個簡單的字典例項:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} #也可如此建立字典: dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 98.6: 37 };
訪問字典裡的值
把相應的鍵放入到方括號中,如下例項:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Age']: ", dict['Age'])
輸出結果如下:
dict['Name']: Runoob dict['Age']: 7
修改字典
向字典新增新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下例項:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict['Age'] = 8; # 更新 Age dict['School'] = "菜鳥教程" # 新增資訊 print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])
輸出結果如下:
dict['Age']: 8 dict['School']: 菜鳥教程
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下例項:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} del dict['Name'] # 刪除鍵 'Name' dict.clear() # 清空字典 del dict # 刪除字典
字典鍵的特性
字典值可以是任何的 python 物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住,如下例項:
dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鳥'} print ("dict['Name']: ", dict['Name'])
輸出結果如下:
dict['Name']: 小菜鳥
2)鍵必須不可變,所以可以用數字,字串或元組充當,而用列表就不行,如下例項:
dict = {['Name']: 'Runoob', 'Age': 7} print ("dict['Name']: ", dict['Name'])
執行會出錯。
dict()函式
dict() 函式用於建立一個字典。
以下例項展示了 dict 的使用方法:
>>>dict() # 建立空字典 {} >>> dict(a='a', b='b', t='t') # 傳入關鍵字 {'a': 'a', 'b': 'b', 't': 't'} >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 對映函式方式來構造字典 {'three': 3, 'two': 2, 'one': 1} >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代物件方式來構造字典,也可以把中括號改為小括號。 {'three': 3, 'two': 2, 'one': 1}
介紹一些dict()函式的BIF
fromkeys()
fromkeys()函式用於建立一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值。
fromkeys()方法語法:dict.fromkeys(seq[, value])
seq -- 字典鍵值列表。
value -- 可選引數, 設定鍵序列(seq)的值。
以下例項展示了 fromkeys()函式的使用方法:
seq = ('Google', 'Runoob', 'Taobao') dict = dict.fromkeys(seq) print("新字典為 : %s" % str(dict)) dict = dict.fromkeys(seq, 10) print("新字典為 : %s" % str(dict))
輸出結果如下:
新字典為 : {'Google': None, 'Runoob': None, 'Taobao': None} 新字典為 : {'Google': 10, 'Runoob': 10, 'Taobao': 10}
copy()
copy() 函式返回一個字典的淺複製。
copy()方法語法:dict.copy()
以下例項展示了 copy()函式的使用方法:
dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = dict1.copy() print("New Dictinary : %s" % str(dict2))
輸出結果如下:
New Dictinary : {'Name': 'Zara', 'Age': 7}
值得注意的是,直接賦值和 copy 是有區別的
可以通過以下例項說明:
dict1 = {'user':'runoob','num':[1,2,3]} dict2 = dict1 # 淺拷貝: 引用物件 dict3 = dict1.copy() # 淺拷貝:深拷貝父物件(一級目錄),子物件(二級目錄)不拷貝,還是引用 # 修改 data 資料 dict1['user']='root' dict1['num'].remove(1) # 輸出結果 print(dict1) print(dict2) print(dict3)
輸出結果如下:
{'user': 'root', 'num': [2, 3]} {'user': 'root', 'num': [2, 3]} {'user': 'runoob', 'num': [2, 3]}
例項中 dict2 其實是 dict1 的引用(別名),所以輸出結果都是一致的,dict3 父物件進行了深拷貝,不會隨dict1 修改而修改,子物件是淺拷貝所以隨 dict1 的修改而修改。
keys()
keys() 函式以列表返回一個字典所有的鍵
keys()方法語法:dict.keys()
以下例項展示了 keys()函式的使用方法:
dict = {'Name': 'Zara', 'Age': 7} print("Value : %s" % dict.keys())
輸出結果如下:
Value : dict_keys(['Name', 'Age'])
values()
values() 函式以列表返回字典中的所有值
values()方法語法:dict.values()
以下例項展示了 values()函式的使用方法:
dict = {'Name': 'Zara', 'Age': 7} print("Value : %s" % dict.values())
輸出結果如下:
Value : dict_values(['Zara', 7])
items()
items() 函式以列表返回可遍歷的(鍵, 值) 元組陣列
items()方法語法:dict.items()
以下例項展示了 items()函式的使用方法:
dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'} print("字典值 : %s" % dict.items()) # 遍歷字典列表 for key,values in dict.items(): print(key,values)
輸出結果如下:
字典值 : dict_items([('Google', 'www.google.com'), ('Runoob', 'www.runoob.com'), ('taobao', 'www.taobao.com')]) Google www.google.com Runoob www.runoob.com taobao www.taobao.com
get()
get() 函式返回指定鍵的值,如果值不在字典中返回預設值。
get()方法語法:dict.get(key, default=None)
key -- 字典中要查詢的鍵。
default -- 如果指定鍵的值不存在時,返回該預設值值。
返回指定鍵的值,如果值不在字典中返回預設值None。
以下例項展示了 get()函式的使用方法:
dict = {'Name': 'Zara', 'Age': 27} print("Value : %s" % dict.get('Age')) print("Value : %s" % dict.get('Sex'))
輸出結果如下:
Value : 27 Value : None
pop()
pop() 方法刪除字典給定鍵 key 及對應的值,返回值為被刪除的值。key 值必須給出。 否則,返回 default 值
pop()方法語法:pop(key[,default])
key: 要刪除的鍵值
default: 如果沒有 key,返回 default 值
以下例項展示了 pop() 方法的使用方法:
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} pop_obj=site.pop('name') print(pop_obj) # 輸出 :菜鳥教程
輸出結果如下:
菜鳥教程
popitem()
popitem() 方法隨機返回並刪除字典中的一對鍵和值
如果字典已經為空,卻呼叫了此方法,就報出KeyError異常
popitem()方法語法:popitem()
以下例項展示了 popitem() 方法的使用方法:
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} pop_obj=site.popitem() print(pop_obj) print(site)
輸出結果如下:
('url', 'www.runoob.com') {'name': '菜鳥教程', 'alexa': 10000}
update()
update() 函式把字典dict2的鍵/值對更新到dict裡
update()方法語法:
dict.update(dict2)
dict2 -- 新增到指定字典dict裡的字典
該方法沒有任何返回值
以下例項展示了 update()函式的使用方法:
dict = {'Name': 'Zara', 'Age': 7} dict2 = {'Sex': 'female' } dict.update(dict2) print("Value : %s" % dict)
輸出結果如下:
Value : {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
私信小編即可獲取我發給我表弟的一些資料和PDF哦! 進群:548377875
setdefault()
setdefault() 函式和get() 方法類似, 如果鍵不存在於字典中,將會新增鍵並將值設為預設值
setdefault()方法語法:dict.setdefault(key, default=None)
key -- 查詢的鍵值。
default -- 鍵不存在時,設定的預設鍵值。
如果字典中包含有給定鍵,則返回該鍵對應的值,否則返回為該鍵設定的值
以下例項展示了 setdefault() 函式的使用方法:
dict = {'runoob': '菜鳥教程', 'google': 'Google 搜尋'} print("Value : %s" % dict.setdefault('runoob', None)) print("Value : %s" % dict.setdefault('Taobao', '淘寶')) print("Value : %s" % dict.setdefault('runb')) print(dict)
輸出結果如下:
Value : 菜鳥教程 Value : 淘寶 Value : None {'runoob': '菜鳥教程', 'google': 'Google 搜尋', 'Taobao': '淘寶', 'runb': None}
思考題
1.嘗試利用字典的特性編寫一個通訊錄程式吧,功能如圖: