網(wǎng)站性能檢測(cè)評(píng)分
注:本網(wǎng)站頁(yè)面html檢測(cè)工具掃描網(wǎng)站中存在的基本問(wèn)題,僅供參考。
python中dict的用法
一步一步帶你理解 Python 中的淺復(fù)制與深復(fù)制 企業(yè)視頻課程
Python 中的賦值語(yǔ)句不會(huì)對(duì)對(duì)象進(jìn)行拷貝,僅僅是將變量名指向?qū)ο?。?duì)于不可修改的對(duì)象來(lái)說(shuō),這種機(jī)制不會(huì)影響我們?nèi)粘5氖褂?。但是,?duì)于可修改的對(duì)象,你偶爾可能需要對(duì)該對(duì)象做一個(gè)真正的復(fù)制。何為真正的復(fù)制?就是修改拷貝來(lái)的對(duì)象不會(huì)影響原來(lái)的對(duì)象。
Python 中內(nèi)置的可修改的集合類對(duì)象,比如列表、字典、集合等,可以直接使用對(duì)應(yīng)的工廠方法進(jìn)行拷貝。
需要注意的是,對(duì)于復(fù)合類型的對(duì)象,比如列表、字典、集合等,復(fù)制有淺復(fù)制與深復(fù)制兩種類型。
淺復(fù)制意味著新建一個(gè)對(duì)象,但是其子元素仍然指向的對(duì)應(yīng)原對(duì)象的子對(duì)象。也就是說(shuō),這只會(huì)對(duì)原對(duì)象進(jìn)行一層的拷貝,而不會(huì)遞歸的對(duì)子對(duì)象也進(jìn)行拷貝。
深復(fù)制則會(huì)遞歸的對(duì)子對(duì)象進(jìn)行拷貝。
如果上面的看不懂,沒(méi)關(guān)系,我們通過(guò)一個(gè)個(gè)例子來(lái)搞清楚。
淺復(fù)制
現(xiàn)在下面這個(gè)列表,我們使用 list() 方法對(duì)它進(jìn)行復(fù)制
這意味著 xs 和 ys 是兩個(gè)不同的對(duì)象。我們可以看看它們的值
為了證明 xs 與 ys 確實(shí)不同,我們可以做個(gè)小實(shí)驗(yàn)。添加一個(gè)子列表到 xs 中,然后看會(huì)不會(huì)影響 ys 。
與預(yù)期相同,如果只是修改原對(duì)象這一層,確實(shí)不對(duì)對(duì) ys 造成影響。
但是由于是淺復(fù)制,ys 中的子元素并非是 xs 子元素的拷貝,僅僅是 xs 子對(duì)象的引用。因此,如果你修改 xs 中的子元素,ys 中的子元素同樣會(huì)被修改。
看起來(lái)我們只是修改了 xs 中的子元素,實(shí)則 ys 中的子元素也被修改了,這是由于淺復(fù)制的緣故。
現(xiàn)在我們大概清楚了淺復(fù)制與深復(fù)制的區(qū)別,但是還有兩個(gè)問(wèn)題待解決:
一是,對(duì)于內(nèi)置的集合類對(duì)象,我們?cè)趺催M(jìn)行深復(fù)制?
二是,對(duì)于任意的類,又該如何進(jìn)行淺復(fù)制與深復(fù)制?
答案是標(biāo)準(zhǔn)庫(kù)中的 copy 模塊,其提供了簡(jiǎn)單的方法對(duì)對(duì)象進(jìn)行淺復(fù)制或深復(fù)制。
深復(fù)制
這次我們?nèi)匀皇褂蒙厦娴睦?,不同的是,我們使?copy 模塊中的 deepcopy() 方法來(lái)進(jìn)行復(fù)制。
還是先看看各自的值
這次,因?yàn)?zs 對(duì) xs 進(jìn)行了深復(fù)制,即不僅拷貝了 xs 本身,還對(duì)它的子對(duì)象都進(jìn)行了遞歸的拷貝,所以,如果我們?cè)俅涡薷?xs 的子元素時(shí),并不會(huì)對(duì) zs 造成影響。我們來(lái)試一試
果然,與預(yù)期一致。
順便說(shuō)下,使用 copy 模塊中的 copy() 方法可以對(duì)對(duì)象進(jìn)行淺復(fù)制。平時(shí)開(kāi)發(fā)需要淺復(fù)制的時(shí)候,你可以使用該方法,但如果碰到內(nèi)置的集合類對(duì)象,比如列表、字典、集合等的時(shí)候,使用對(duì)應(yīng)的工廠方法如 list() ,dict() ,set() 等更 Pythonic 一些。
對(duì)任意對(duì)象進(jìn)行復(fù)制
現(xiàn)在有一個(gè)點(diǎn)類 Point ,如下
其中,__repr__ 方法可以讓我們更方便的查看對(duì)象的信息。需要注意的是,f'...' 這種格式化字符串的方式在 Python 3.6 才支持,如果是 Python 2 或者 3.6 以前的版本可以使用 '...' % (v1[, v2, ...]) 的方式。
現(xiàn)在我們創(chuàng)建一個(gè)點(diǎn)對(duì)象并進(jìn)行淺復(fù)制
查看兩個(gè)對(duì)象的信息
和預(yù)期一致。
需要注意的是,因?yàn)轭惖膬蓚€(gè)成員 x 和 y 都是簡(jiǎn)單類型,這里是整型,所以這里淺復(fù)制與深復(fù)制沒(méi)有任何差別。后面我會(huì)擴(kuò)展這個(gè)例子。
現(xiàn)在我要定義一個(gè)矩形類,其類成員將會(huì)使用到上面的點(diǎn)類。
首先我們先試一下淺復(fù)制
看下各自的信息
記得我們上面修改列表的淺復(fù)制與深復(fù)制的例子嗎?這里,我要類似的實(shí)驗(yàn)。我們修改 rect 的成員,不出意外的話,srect 也會(huì)改變。
果然。
下面,我會(huì)進(jìn)行深復(fù)制,然后再類似的修改
這次,深復(fù)制出來(lái)的 drect 對(duì)象與 srect 才能說(shuō)是“真正不同”的對(duì)象。
copy 模塊中還有其它很多用法,比如定義對(duì)象的 __copy__() 和 __deepcopy__() 方法可以自定義對(duì)象的淺復(fù)制與深復(fù)制行為等。這不是本文的重心,有興趣的可以去看相應(yīng)的文檔 https://docs.python.org/3/library/copy.html 。
小結(jié)
* 淺復(fù)制不會(huì)克隆子對(duì)象,所以,復(fù)制出來(lái)的對(duì)象和原對(duì)象并非完全不想關(guān)。
* 深復(fù)制會(huì)遞歸的克隆子對(duì)象,所以,復(fù)制出來(lái)的對(duì)象和原對(duì)象完全不相關(guān),但是深復(fù)制比淺復(fù)制會(huì)慢一些。
* 使用 copy 模塊你可以復(fù)制任何類,不管是淺復(fù)制還是深復(fù)制。
鞏固
從網(wǎng)上找了組圖片(侵刪),讓大家加深下認(rèn)識(shí)
首先是賦值
然后是淺復(fù)制
最后是深復(fù)制
Python基礎(chǔ)學(xué)習(xí)之常用六大數(shù)據(jù)類型 推廣視頻課程
剛開(kāi)始學(xué)習(xí)一門編程語(yǔ)言,除了了解運(yùn)行環(huán)境與語(yǔ)言類型之外,最基本還是從該語(yǔ)言的基本數(shù)據(jù)類型開(kāi)始學(xué)起。
Python六大常用數(shù)據(jù)類型:
int 整數(shù) float 浮點(diǎn)數(shù) str 字符串 list 列表 tuple 元組 dict 字典
講解這些先說(shuō)一下python中的變量與變量名。
變量其實(shí)本質(zhì)上是一個(gè)具有特殊格式的內(nèi)存,變量名則是指向這個(gè)內(nèi)存的別名。python中的變量不需要聲明,所有的變量必須賦值了才能使用。賦值的步驟:
a = 100
第一步:準(zhǔn)備好值100第二部:準(zhǔn)備好變量名a第三部:將值與名字進(jìn)行關(guān)聯(lián)
一、整數(shù)python將其他一些靜態(tài)語(yǔ)言中的int、long,也就是整型和長(zhǎng)整型合并為了一個(gè)。python中的int是邊長(zhǎng)的,也就是說(shuō)可以存儲(chǔ)無(wú)限大的整數(shù),但是這是不現(xiàn)實(shí)的,因?yàn)闆](méi)有這么多的內(nèi)存夠分配。整型不僅支持十進(jìn)制,還支持二進(jìn)制、八進(jìn)制、十六進(jìn)制??梢酝ㄟ^(guò)下面的方式來(lái)互相轉(zhuǎn)換:
print(bin(20)) #轉(zhuǎn)換二進(jìn)制print(oct(20)) #轉(zhuǎn)換八進(jìn)制print(hex(20)) #轉(zhuǎn)換十六進(jìn)制
二、浮點(diǎn)型浮點(diǎn)數(shù)也就是小數(shù),如22.1,44.2,也可以使用科學(xué)計(jì)數(shù)法,比如:1.22e8。python支持對(duì)整數(shù)和浮點(diǎn)數(shù)直接進(jìn)行四則混合運(yùn)算。整數(shù)運(yùn)算結(jié)果仍然是整數(shù),浮點(diǎn)數(shù)運(yùn)算結(jié)果仍然是浮點(diǎn)數(shù),但整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算的結(jié)果就變成浮點(diǎn)數(shù)了。
a = 1b = 1.1print(type(a+b)) #
三、字符串字符串在任何編程語(yǔ)言中都是最常用的數(shù)據(jù)類型。字符串的創(chuàng)建很簡(jiǎn)單,也是上面所說(shuō)的三步,但是要加上單引號(hào)或者雙引號(hào)。
a = "hello python"
也可以使用 “”" 創(chuàng)建多行字符串:
a = """ hello python"""
字符串可以通過(guò)下面方式進(jìn)行截取或者連接:
print (str[0:4]) 輸出第一個(gè)到倒數(shù)第四個(gè)的所有字符 print (str[0]) 輸出單字符 第1個(gè)字符print (str[3:]) 輸出從第四個(gè)開(kāi)始之后的所有字符print (str * 2) 輸出字符串兩次print (str + "bbbb") 連接字符串
字符串常用函數(shù):str.strip() 消除字符串s左右兩邊的空白字符(包括’\t’,’\n’,’\r’,’’)len(str) 獲取字符串長(zhǎng)度str.upper() 轉(zhuǎn)換為大寫str.lower() 轉(zhuǎn)換為小寫str.title() 每個(gè)單詞首字母大寫str.capitalize() 首字母大寫字符串翻轉(zhuǎn):
a = 'abcde'print(a[::-1])
字符串分割:
a = 'hello,python'print(a.split(',')) #['hello', 'python'] 返回一個(gè)列表
相對(duì)應(yīng)的還有一個(gè)將列表元素連接成字符串:
a = ['hello', 'python']str = '-'print(str.join(a)) # hello-python
四、列表列表的寫法是一個(gè)方括號(hào)內(nèi)的值用逗號(hào)分隔。比如上面的[‘hello’, ‘python’]。列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型,列表中的每個(gè)元素都分配一個(gè)數(shù)字索引,第一個(gè)索引是0,第二個(gè)索引是1,依此類推。訪問(wèn)列表中的值可以通過(guò)下面的方式:
list1 = [1, 2, 3, 4, 5, 6]print(list1[2])
同樣可以通過(guò)索引截取
print ("list1[2:5]: ", list1[2:5])
列表常用操作:list1.append(‘7’) 追加一個(gè)元素在末尾,每次只能添加一個(gè)len(list1) 返回列表元素個(gè)數(shù)max(list1) 返回列表元素最大值min(list1) 返回列表元素最小值list1.count(obj) 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)list1.index(obj) 從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置list1.reverse() 反向列表中元素list1.clear() 清空列表list1.extend(seq) 在列表末尾一次性追加另一個(gè)序列中的多個(gè)值,也就是擴(kuò)充了列表 append與extend的區(qū)別:
A = ['a', 'b', 'c']A.append(['d', 'e'])print(A) # ['a', 'b', 'c', ['d', 'e']]B = ['a', 'b', 'c']B.extend(['d', 'e'])print(B) # ['a', 'b', 'c', 'd', 'e']
extend方法只能接收l(shuí)ist類型,它是把這個(gè)列表中的每個(gè)元素添加到原list中。append可以接收任意類型,追加到原list的末尾。
五、元組元組的創(chuàng)建也很簡(jiǎn)單,和list類似,只是把’[]‘換成了’()’。
tup1 = ('hello', 'python')
元組中只有一個(gè)元素的時(shí)候要注意:
tup2 = (10)tup3 = ('a')print(type(tup2)) #
因?yàn)檫@樣會(huì)被解釋器當(dāng)做運(yùn)算符,所以正確的方法是在第一個(gè)元素后面添加逗號(hào)。
tup4 = ('a',)print(type(tup4)) #
元組同樣可以使用下標(biāo)索引來(lái)訪問(wèn)元組中的值:
tup5 = ('hello', 'python', 'hello', 'word')print(tup5[1]) #pythonprint(tup5[1:3]) #('python', 'hello')
注意:元組是不可以被修改的。
tup6 = ('hello', 'python', 'hello', 'word')tup6[2] = 'aaa'
上面會(huì)出現(xiàn)一個(gè)異常: TypeError: ‘tuple’ object does not support item assignment.但是元組中如果包含了一個(gè)列表,那么這個(gè)列表是可以被修改的。
tup7 = ('hello', 'python', 'hello', 'word', ['aa', 'bb', 'cc'])tup7[-1][1] = 'ddd'print(tup7) # ('hello', 'python', 'hello', 'word', ['aa', 'ddd', 'cc'])
元組運(yùn)算符:len(tup) 計(jì)算元素個(gè)數(shù)tup1 + tup2 連接生成新元組tup * 4 元組復(fù)制num in tup 元素是否存在,返回True/False
六、字典python中的字典就是key,value的形式。使用大括號(hào)包含起來(lái)。字典中的成員的鍵是唯一的,如果出現(xiàn)多個(gè)同名的鍵,那么寫在后面覆蓋前面的值。形式如下:
dict1 = {'a' : 1, 'b' : 2}
字典的常用操作最基本的也就是增刪改查:獲取:直接通過(guò)鍵來(lái)獲取。
dict['b'] # 2
dict.keys() 獲取字典中所有的鍵dict.values() 獲取字典中的所有的值增加:
dict1['c'] = 3 #{'a': 1, 'b': 2, 'c': 3} #如果鍵存在則更新對(duì)應(yīng)的值
修改:直接給鍵進(jìn)行再次賦值就可以修改鍵對(duì)應(yīng)的值了。如果鍵不存在,則變成添加成員。還可以通過(guò):
dict1.update({"a":"11"})dict1.setdefault("a", "222") # 已存在的鍵則修改無(wú)效dict1.setdefault("d","222") # 不存在的話則創(chuàng)建dict1.setdefault("e") # 沒(méi)有設(shè)置值為None
刪除:使用pop刪除指定鍵對(duì)應(yīng)的成員,同時(shí)返回該值
print(dict1) # {'a': '11', 'b': 2, 'c': 3, 'd': '222', 'e': None}print(dict1.pop("a")) # aprint(dict1) # {'b': 2, 'c': 3, 'd': '222', 'e': None}#在不設(shè)置默認(rèn)值的情況下,使用pop刪除不存在的鍵,會(huì)報(bào)錯(cuò)。print(dict1.pop("f")) # 報(bào)錯(cuò) KeyError: 'f'
如果設(shè)置了默認(rèn)值, print(dict1.pop(“f”, None)),則不會(huì)報(bào)錯(cuò),返回這個(gè)默認(rèn)值。判斷是否刪除成功可以通過(guò)下面方式來(lái)判斷:
if dict1.pop("f", None) == None: print('鍵不存在')else: print('刪除成功')
以上則是python中最基本的數(shù)據(jù)類型以及用法,當(dāng)然還有其他的數(shù)據(jù)類型,作者暫時(shí)只列舉了這些。
更過(guò)python文章,關(guān)注作者哦!干貨多多!!
Python之list、dict、 json等常見(jiàn)操作 流量視頻課程
合并兩個(gè)list并去除重復(fù)元素
合并list用+運(yùn)算符,再用set去除重復(fù)元素,最后轉(zhuǎn)換回list。
用其中一個(gè)list+另一個(gè)去除在前面list后的元素組成的list。
合并兩個(gè)list生成dict(一個(gè)為keys,一個(gè)為values)
先對(duì)兩個(gè)list用zip函數(shù),最后轉(zhuǎn)換成dict。
dict轉(zhuǎn)換成元素為tuple的list
用dict的items函數(shù)。
用dict的iteritems函數(shù)。
兩個(gè)list元素分別相加生成求和后的list
用map和operator.add。
用zip和sum函數(shù)。
json轉(zhuǎn)換成dict
用json.loads()方法。
dict轉(zhuǎn)換成json
用json.dumps()方法。
json數(shù)據(jù)寫入到文件
用json.dump()方法。
從文件讀入json數(shù)據(jù)
用json.load()方法。
Python字典操作技巧 互聯(lián)網(wǎng)視頻課程
一、如何讓字典保持有序
可以使用collections模塊中的OrderedDict類,OrderedDict內(nèi)部維護(hù)了一個(gè)雙向鏈表,它會(huì)根據(jù)元素加入的順序來(lái)排列鍵的位置,大小是普通字典的2倍多,所以,在使用時(shí)要做好需求分析。
from collections import OrderedDictd=OrderedDict() d['a']=1d['b']=2d['c']=3d['d']=4for key in d:print(key,d[key])
輸出結(jié)果:
a 1b 2 c 3 d 4 [Finished in 0.2s]
二、如何對(duì)字典求最大值、最小值:
為了對(duì)字典內(nèi)容做有用的計(jì)算,通常會(huì)利用zip()將字典的鍵和值反轉(zhuǎn)過(guò)來(lái):
prices={'a':50.3,'b':12.3,'c':15.98,'d':10.75 }min_price=min(zip(prices.values(),prices.keys()))max_price=max(zip(prices.values(),prices.keys()))print(min_price)print(max_price)
輸出結(jié)果:
(10.75, 'd')(50.3, 'a')[Finished in0.2s]
三、如何找到兩個(gè)字典中相同的地方:
python字典keys()方法同items()方法,返回的是keys-view對(duì)象,它們支付常見(jiàn)的集合操作如并,交,差;但values()方法不支持。
x={ 'a':1, 'b':5, 'c':10}y={ 'd':2, 'b':5, 'c':8}re_a=x.keys() & y.keys()print('x,y中均有的鍵是:',re_a)re_b=x.keys() - y.keys()print('x中有但y中沒(méi)有的鍵是:',re_b)re_c=x.items() & y.items()print('x,y中相同的鍵值對(duì):',re_c)
輸出結(jié)果:
x,y中均有的鍵是: {'c', 'b'}x中有但y中沒(méi)有的鍵是: {'a'}x,y中相同的鍵值對(duì): {('b', 5)}[Finished in0.1s]
五、如何通過(guò)公共鍵對(duì)字典列表排序
利用operator模塊中的itemgetter函數(shù)排序非常簡(jiǎn)單假設(shè)我們從數(shù)據(jù)庫(kù)中獲得的數(shù)據(jù)如下:
rows=[{'fname':'Brian','lname':'Jones','age':18},{'fname':'David','lname':'Beazley','age':25},{'fname':'John','lname':'Clesse','age':19},{'fname':'Bim','lname':'Jones','age':23}]
我們對(duì)以上記錄進(jìn)行排序非常簡(jiǎn)單:
from operator import itemgetterrows_by_fname=sorted(rows,key=itemgetter('fname'))rows_by_age=sorted(rows,key=itemgetter('age'))print(rows_by_fname)print(rows_by_age)
輸出結(jié)果:
[{'fname': 'Bim', 'lname': 'Jones', 'age': 23}, {'fname': 'Brian', 'lname': 'Jones', 'age': 18}, {'fname': 'David', 'lname': 'Beazley', 'age': 25}, {'fname': 'John', 'lname': 'Clesse', 'age': 19}][{'fname': 'Brian', 'lname': 'Jones', 'age': 18}, {'fname': 'John', 'lname': 'Clesse', 'age': 19}, {'fname': 'Bim', 'lname': 'Jones', 'age': 23}, {'fname': 'David', 'lname': 'Beazley', 'age': 25}]
[Finished in0.1s]
Python中defaultdict用法 行業(yè)視頻課程
六月 北京 | 高性能計(jì)算之GPU CUDA培訓(xùn)
6月22-24日
三天密集式學(xué)習(xí) 快速帶你入門
閱讀全文
>
正文共311個(gè)字,預(yù)計(jì)閱讀時(shí)間5分鐘。
defaultdict類就好像是一個(gè)dict,但是它是使用一個(gè)類型來(lái)初始化的
defaultdict類的初始化函數(shù)接受一個(gè)類型作為參數(shù),當(dāng)所訪問(wèn)的鍵不存在的時(shí)候,可以實(shí)例化一個(gè)值作為默認(rèn)值
defaultdict類除了接受類型名稱作為初始化函數(shù)的參數(shù)之外,還可以使用任何不帶參數(shù)的可調(diào)用函數(shù),到時(shí)該函數(shù)的返回結(jié)果作為默認(rèn)值,這樣使得默認(rèn)值的取值更加靈活。
1strings = ('puppy', 'kitten', 'puppy', 'puppy', 2'weasel', 'puppy', 'kitten', 'puppy') 3counts = {} 4""" 5單詞統(tǒng)計(jì) 6""" 7# 方法1 使用判斷語(yǔ)句檢查 8for word in strings: 9if word notin counts:10counts[word] = 111else:12counts[word] += 113print(counts)14# 方法2 使用dict.setdefault()方法來(lái)設(shè)置默認(rèn)值:15counts = {}16for word in strings:17counts.setdefault(word, 0)18counts[word] += 119print(counts)20# 方法3 使用collections.defaultdict21from collections import defaultdict22counts = defaultdict(lambda: 0)23for word in strings:24counts[word] += 125print(counts)
結(jié)果:
1{'puppy': 5, 'kitten': 2, 'weasel': 1}2{'puppy': 5, 'kitten': 2, 'weasel': 1}3defaultdict(
更多:
https://cnblogs/jidongdeatao/p/6930325.html
原文鏈接:https://jianshu/p/fa06ceaa56a8
查閱更為簡(jiǎn)潔方便的分類文章以及最新的課程、產(chǎn)品信息,請(qǐng)移步至全新呈現(xiàn)的“LeadAI學(xué)院官網(wǎng)”:leadai.org
請(qǐng)關(guān)注人工智能LeadAI公眾號(hào),查看更多專業(yè)文章
大家都在看
LSTM模型在問(wèn)答系統(tǒng)中的應(yīng)用
基于TensorFlow的神經(jīng)網(wǎng)絡(luò)解決用戶流失概覽問(wèn)題
最全常見(jiàn)算法工程師面試題目整理(一)
最全常見(jiàn)算法工程師面試題目整理(二)
TensorFlow從1到2 | 第三章 深度學(xué)習(xí)革命的開(kāi)端:卷積神經(jīng)網(wǎng)絡(luò)
裝飾器 | Python高級(jí)編程
今天不如來(lái)復(fù)習(xí)下Python基礎(chǔ)
「每天3分鐘學(xué)Python」字典基本知識(shí)及用dict統(tǒng)計(jì)單詞出現(xiàn)個(gè)數(shù) 流量視頻課程
01
Python的數(shù)據(jù)結(jié)構(gòu)字典被經(jīng)常用到,尤其在查詢使用較多的場(chǎng)合。今天,以統(tǒng)計(jì)數(shù)組中元素出現(xiàn)個(gè)數(shù)為例,介紹Python中字典的基本用法。
02
Python增加元素,不像其他語(yǔ)言使用顯示的操作接口,只需要 dict[1] = 3, 如果字典中不存在1,則直接新增元素鍵值對(duì)(1,3),如果存在則替換鍵1為3.
如何判斷某個(gè)鍵存在呢?
if key in dict: 這樣就判斷出key是否在dict字典中了。
03
統(tǒng)計(jì)元素的出現(xiàn)次數(shù)
[1,3,0,-1,4,3,2,1,2,3,4,5]
如上數(shù)組,統(tǒng)計(jì)元素出現(xiàn)次數(shù)的代碼:
結(jié)果:
{1: 2, 3: 3, 0: 1, -1: 1, 4: 2, 2: 2, 5: 1}
python之dict字典數(shù)據(jù)類型講解 流量視頻課程
前言
python中有一種非常重要的數(shù)據(jù)類型就是dict字典。字典數(shù)據(jù)類型使用頻率是很廣泛的,其實(shí)字典數(shù)據(jù)類型非常類似于Java中的Map,JavaScript中的json。本文就重點(diǎn)講解dict字典。
概念
字典不同于其他數(shù)據(jù)類型,最重要的區(qū)別在于字典數(shù)據(jù)類型是通過(guò)一個(gè)key來(lái)去獲取對(duì)應(yīng)的value。字典是通過(guò)鍵值對(duì)/key-value對(duì)聯(lián)系起來(lái)的。
語(yǔ)法
字典的每個(gè)鍵值對(duì)使用“:”冒號(hào)進(jìn)行分割,多個(gè)鍵值對(duì)使用“,”逗號(hào)分割。整個(gè)字典被一對(duì)“{}”包括起來(lái)。
字典中的key必須要保證唯一,但是值可以重復(fù)。
語(yǔ)法形如:{key1 : value1 , key2 : value2 ......}
案例舉例:{'name' : 'HelloWorld' , 'age' : 30}
字典常用方法
1、定義字典
總結(jié):字典的key使用“單引號(hào)”或者“雙引號(hào)”括起來(lái),key所對(duì)應(yīng)的value的值是什么類型就什么類型。通過(guò)type可以查看變量的具體類型。
2、user對(duì)象增加key-value對(duì)
總結(jié):增加鍵值對(duì)的語(yǔ)法是“變量名[新的key] = value”的形式。
3、user對(duì)象修改address的值
總結(jié):修改指定的鍵所對(duì)應(yīng)的值,語(yǔ)法是:“變量名[已經(jīng)存在的key] = value”的形式。
4、user刪除address
總結(jié):刪除字典中指定的key,使用語(yǔ)法“del 變量名[key]”的形式。
5、根據(jù)指定的key查詢所對(duì)應(yīng)的value
總結(jié):兩種方式可以根據(jù)指定的key獲取對(duì)應(yīng)的value。
6、獲取字典的長(zhǎng)度
總結(jié):使用len方法可以獲取到字典的長(zhǎng)度,這里的長(zhǎng)度其實(shí)是字典中key的個(gè)數(shù)。
7、獲取字典中所有的key
總結(jié):使用keys()函數(shù)獲取所有的key,注意,這個(gè)方法的返回值是一個(gè)key組成的列表。
8、獲取字典中所有value
總結(jié):通過(guò)values()函數(shù)獲取字典中所有的值,注意:返回值是value組成的列表。
9、獲取字典的鍵值對(duì)
總結(jié):使用items方法可以獲取字典的key-value鍵值對(duì),注意:返回的是一個(gè)有鍵值對(duì)所構(gòu)成的元組的列表。
總結(jié)
本文講到了字典這種數(shù)據(jù)類型,字典其實(shí)用的很廣泛,也講解了字典的各種方法,也都非常的簡(jiǎn)單也容易理解,我們必須好好的打好基本功,多學(xué)習(xí)。