Python映射類型之dict詳解
映射類型 — dict
字典可用多種方式來創(chuàng)建:
- 使用花括號內以逗號分隔鍵: 值對的方式: {‘jack’: 4098, ‘sjoerd’: 4127} or {4098:‘jack’, 4127: ‘sjoerd’}
- 使用字典推導式: {}, {x: x ** 2 for x in range(10)}
dict_a = {key: value for key in 'python' for value in range(2)} list_phone = [('HUAWEI', '華為'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')] dict_c = {key: value for key, value in list_phone}
- 使用類型構造器: dict(), dict([(‘foo’, 100), (‘bar’, 200)]), dict(foo=100,bar=200)
字典所支持的操作:
list(d)
返回字典d 中使用的所有鍵的列表
len(d)
返回字典d 中的項數
d[key]
返回d 中以key 為鍵的項。如果映射中不存在key 則會引發(fā)KeyError。
如果字典的子類定義了方法__missing__() 并且key 不存在,則d[key] 操作將調用該方法并附帶鍵key 作為參數。d[key] 隨后將返回或引發(fā)__missing__(key) 調用所返回或引發(fā)的任何對象或異常。沒有其他操作或方法會發(fā)起調用__missing__()。如果未定義__missing__(),則會引發(fā)KeyError。missing() 必須是一個方法;它不能是一個實例變量:
>>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1
上面的例子顯示了collections.Counter 實現的部分代碼。還有另一個不同的__missing__方法是由collections.defaultdict 所使用的。
d[key] = value
將d[key]設為value。
del d[key]
將d[key] 從d中移除。如果映射中不存在key 則會引發(fā)KeyError。
key in d
如果d中存在鍵key 則返回True,否則返回False。
iter(d)
返回以字典的鍵為元素的迭代器。這是iter(d.keys()) 的快捷方式。
clear()
移除字典中的所有元素。
copy()
返回原字典的淺拷貝
深copy
若你想徹底使2個dict完全獨立,無論有多少層數據。那就要用python工具包里的一個工具了
import copy data = { "name":"alex", "age":18, "scores":{ "語文":130, "數學":60, "英語":98, } } d2 = data.copy() d3 =copy.deepcopy(data) d3["scores"]["語文"] = 149 print(d3) print(data)
classmethod fromkeys(iterable[, value ]) fromkeys()
函數用于創(chuàng)建一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值
seq = ('Google', 'Runoob', 'Taobao') thisdict = dict.fromkeys(seq) print "新字典為 : %s" % str(dict) thisdict = dict.fromkeys(seq, 10) print "新字典為 : %s" % str(thisdict) """ 新的字典為 : {'age': None, 'name': None, 'sex': None} 新的字典為 : {'age': 10, 'name': 10, 'sex': 10} """
get(key[, default ])
如果key 存在于字典中則返回key 的值,否則返回default。如果default 未給出則默認為None,因而此方法絕不會引發(fā)KeyError。
items()
- 以列表返回視圖對象,是一個可遍歷的key/value對
dict.keys()
、dict.values()
和dict.items()
返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Value : %s" % tinydict.items()) # Value : dict_items([('Age', 7), ('Name', 'Runoob')])
keys()
返回由字典鍵組成的一個新視圖
dict.keys()
、dict.values()
和 dict.items()
返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.keys()) # <class 'dict_keys'>
pop(key[, default ])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} element = site.pop('name') print('刪除的元素為:', element) print('字典為:', site) """ 刪除的元素為: 菜鳥教程 字典為: {'alexa': 10000, 'url': 'www.runoob.com'} """
popitem()
- popitem() 方法隨機返回并刪除字典中的最后一對鍵和值。
- 如果字典已經為空,卻調用了此方法,就報出KeyError異常。
- 返回一個鍵值對(key,value)形式,按照 LIFO(Last In First Out后進先出法)順序規(guī)則,即最末尾的鍵值對。
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} pop_obj=site.popitem() print(pop_obj) print(site)
reversed(d)
返回一個逆序獲取字典鍵的迭代器。這是reversed(d.keys()) 的快捷方式
setdefault(key[, default ])
setdefault() 方法和 get()方法 類似, 如果鍵不存在于字典中,將會添加鍵并將值設為默認值。
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Age 鍵的值為 : %s" % tinydict.setdefault('Age', None)) print ("Sex 鍵的值為 : %s" % tinydict.setdefault('Sex', None)) print ("新字典為:", tinydict)
update([other ])
update() 函數把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 里
tinydict = {'Name': 'Runoob', 'Age': 7} tinydict2 = {'Sex': 'female' } tinydict.update(tinydict2) print ("更新字典 tinydict : ", tinydict)
values()
返回一個視圖對象,dict.keys()、dict.values() 和 dict.items() 返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.values()) # dict_values([3, 2])
d | other
合并d 和other 中的鍵和值來創(chuàng)建一個新的字典,兩者必須都是字典。當d 和other 有相同鍵時,other 的值優(yōu)先。3.9才支持
a = {"apple": 3, "banana": 4}b = {"grape": 5, "banana": 8}print(a | b)
d |= other
- 用other 的鍵和值更新字典d ,other 可以是mapping 或iterable 的鍵值對。當d 和other 有相同鍵時,other 的值優(yōu)先。
- 3.9 新版功能
a = {"one": 1, "two": 2, "three": 3} a |= {"three": 30, "four": 4, "five": 5} print(a) a = {"apple": 3, "banana": 4} b = {"grape": 5, "banana": 8} a |= b print(a) """ {'one': 1, 'two': 2, 'three': 30, 'four': 4, 'five': 5} {'apple': 3, 'banana': 8, 'grape': 5} """
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
淺談python已知元素,獲取元素索引(numpy,pandas)
今天小編就為大家分享一篇淺談python已知元素,獲取元素索引(numpy,pandas),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11如何在sae中設置django,讓sae的工作環(huán)境跟本地python環(huán)境一致
這篇文章主要介紹了如何在sae中設置django,讓sae的工作環(huán)境跟本地python環(huán)境一致,需要的朋友可以參考下2017-11-11