App下載

python字典合并——來自python3.9的新方法!

W3Cschool小編 2021-09-06 10:45:46 瀏覽數(shù) (3146)
反饋

在python中,字典是一個(gè)很有特色的數(shù)據(jù)結(jié)構(gòu)。在實(shí)際開發(fā)過程中字典的運(yùn)用相當(dāng)廣泛。但是,有些字典操作并不是那么好用,比如在字典中有一種業(yè)務(wù)運(yùn)用得比較多的操作,就是字典合并,今天我們就來介紹常用的字典合并的三種方法和python3.9新增的一種字典合并方法吧!

 for 循環(huán)的方式

比較經(jīng)典的合并字典的方式是使用 for 循環(huán):

>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> for k, v in b.items():
...     a[k] = v
...
>>> a
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}

這種方法每次合并都要調(diào)用一次循環(huán),效率是比較低下的。

dict(a, **b) 的方式

大家都知道我們可以使用 **dict 的方式打開一個(gè)字典類型的數(shù)據(jù), 我們可以使用 dict 方法并借助這種方式實(shí)現(xiàn)兩個(gè)字典的合并:

>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> dict(a, **b)
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}

【注意】此時(shí), 會(huì)返回一個(gè)新的字典。

這種使用占位符的方式對于已經(jīng)熟練掌握python編程的小伙伴來說是比較簡單的,但是對于剛開始學(xué)習(xí)編程的小伙伴來說,這并不簡潔易懂。

dict.update(other_dict) 的方式

直接調(diào)用字典的 update() 方法, 同樣可以將兩個(gè)字典合并:

>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a.update(b)
>>> a
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}

【注意】此時(shí)同樣實(shí)現(xiàn)了兩個(gè)字典的合并, 但是需要注意的是 a.update(b) 的方式并沒有返回一個(gè)新的字典, 而是將字典 a 進(jìn)行了 “更新”, 此時(shí)的返回值是 None。

這種方法雖然好用也易于理解,但實(shí)際上,還有更易于理解的方法:字典的合并可以理解為是字典的相加,在python3.9中新增了(新增內(nèi)置)|和|=兩種操作符,現(xiàn)在我們可以這樣干:

python3.9新增的操作符的方式:

在python3.9中,可以直接使用|或|=這兩種操作符,前者可以用來合并兩個(gè)字典(合并到右邊的字典內(nèi))

>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a|b
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}

當(dāng)字典中有相同的鍵的適合,會(huì)從左到右取最后出現(xiàn)的值。

|=的運(yùn)算類似于+=,這個(gè)時(shí)候就會(huì)將字典合并到左邊的字典內(nèi)。

值得一提的是,|=不僅僅可以用于合并字典,也可以用于合并字典和別的類型的數(shù)據(jù)(比如列表)。例如

>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> a |= [('python','java')]
>>> a
{1: '編程獅', 2: 'W3Cschool', 'python': 'java'}


0 人點(diǎn)贊