在python中,字典是一個很有特色的數(shù)據(jù)結(jié)構(gòu)。在實際開發(fā)過程中字典的運用相當廣泛。但是,有些字典操作并不是那么好用,比如在字典中有一種業(yè)務運用得比較多的操作,就是字典合并,今天我們就來介紹常用的字典合并的三種方法和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 的方式打開一個字典類型的數(shù)據(jù), 我們可以使用 dict 方法并借助這種方式實現(xiàn)兩個字典的合并:
>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> dict(a, **b)
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}
【注意】此時, 會返回一個新的字典。
這種使用占位符的方式對于已經(jīng)熟練掌握python編程的小伙伴來說是比較簡單的,但是對于剛開始學習編程的小伙伴來說,這并不簡潔易懂。
dict.update(other_dict) 的方式
直接調(diào)用字典的 update() 方法, 同樣可以將兩個字典合并:
>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a.update(b)
>>> a
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}
【注意】此時同樣實現(xiàn)了兩個字典的合并, 但是需要注意的是 a.update(b) 的方式并沒有返回一個新的字典, 而是將字典 a 進行了 “更新”, 此時的返回值是 None。
這種方法雖然好用也易于理解,但實際上,還有更易于理解的方法:字典的合并可以理解為是字典的相加,在python3.9中新增了(新增內(nèi)置)|和|=兩種操作符,現(xiàn)在我們可以這樣干:
python3.9新增的操作符的方式:
在python3.9中,可以直接使用|或|=這兩種操作符,前者可以用來合并兩個字典(合并到右邊的字典內(nèi))
>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a|b
{1: '編程獅', 2: 'W3Cschool', 3: 'python', 4: 'java'}
當字典中有相同的鍵的適合,會從左到右取最后出現(xiàn)的值。
|=的運算類似于+=,這個時候就會將字典合并到左邊的字典內(nèi)。
值得一提的是,|=不僅僅可以用于合并字典,也可以用于合并字典和別的類型的數(shù)據(jù)(比如列表)。例如
>>> a = {1: '編程獅', 2: 'W3Cschool'}
>>> a |= [('python','java')]
>>> a
{1: '編程獅', 2: 'W3Cschool', 'python': 'java'}