擴充套件 Python 字典

Neema Muganga 2023年1月30日 2021年12月4日
  1. 在 Python 中使用 update() 方法擴充套件字典
  2. 使用 ** 運算子擴充套件 Python 字典
  3. 使用字典理解來擴充套件 Python 字典
  4. 使用 collections.Chainmap 擴充套件 Python 字典
擴充套件 Python 字典

本文將向使用者展示如何用另一個字典擴充套件一個 python 字典。字典是可以更改(是可變的)資料的容器,它以鍵值對,比如 {key: 'value'}, 的形式儲存這些資料。

你可以通過連線使用另一個元素擴充套件字典。這意味著一個字典中的所有鍵值對都將新增到另一個字典中。

在 Python 中使用 update() 方法擴充套件字典

update() 方法是 Python 用來實現字典連線的方法之一。它是通過將另一個字典的鍵值對元素新增到當前字典的末尾來完成的。

當擴充套件具有來自另一本字典的不同鍵值對的字典時,此方法特別有用。否則,使用 update() 將用第二個字典中的元素覆蓋第一個字典中的現有值。

簡單來說,第二個定義的字典中的值由於重疊而覆蓋了第一個字典中的值。

first_dict = {'name': 'Yolanda', 'major':'Bsc Comp Science', 'age':23}
second_dict = {'name': 'Beatrice', 'major':'Bsc Comp Science', 'age':43}
first_dict.update(second_dict)
print(first_dict)

輸出:

{'name': 'Beatrice', 'major': 'Bsc Comp Science', 'age': 43}

上述字典具有相同的鍵值,即 name。使用 update() 連線這些資料儲存會導致 first_dictname 鍵值被 second_dict 的鍵值覆蓋。因此,它會生成一個顯示在輸出中的字典。

但是,當使用尚未定義的值擴充套件一個字典時,update() 會顯示一個字典,其中包含來自兩個已定義字典的所有鍵值對。

例子:

dict_one = {'u':2, 'v':4, 'w':7}
dict_two = {'x':5, 'y':6, 'z': 8}
dict_one.update(dict_two)
print(dict_one)

輸出:

{'u': 2, 'v': 4, 'w': 7, 'x': 5, 'y': 6, 'z': 8}

使用 ** 運算子擴充套件 Python 字典

在單行語句中使用 ** 運算子如下所示:

dict(iterable, **kwargs)

iterable 是第一個定義的字典,第二個引數是第二個字典(關鍵字引數)。

例子

y = {'a': 5, 'b': 6}
z = {'c': 7, 'd': 9}

x = dict(y, **z)
print(x)

輸出:

{'a': 5, 'b': 6, 'c': 7, 'd': 9}

如果定義的字典中存在鍵值對重疊,則第二個字典的專案與第一個字典中的專案重疊,就像我們在 update() 中看到的那樣。

例子:

first_dict = {'a':2, 'b':3, 'c':5}
second_dict = {'c':4, 'e':6, 'f': 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

輸出:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

同樣重要的是要注意 **dictionary 項中的引數名稱和鍵必須是字串資料型別。否則,將顯示 Typerror 異常。

例子:

first_dict = {'a':2, 'b':3, 'c':5}
second_dict = {'c':4, 'e':6, 7: 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

輸出:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: keywords must be strings

使用字典理解來擴充套件 Python 字典

這種轉換方法通過有條件地將原始字典中的專案包含到新字典中來將一個 Python 字典轉換為另一個字典。它的工作原理類似於上面使用星號。

first_dict = {'a':2, 'b':3, 'c':5}
second_dict = {'c':4, 'e':6, 'f': 7}
the_dictionary = {**first_dict, **second_dict}
print(the_dictionary)

輸出:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

使用 collections.Chainmap 擴充套件 Python 字典

Python 提供了 ChainMap 類,該類將多個字典組合在一起以形成可以在必要時更新的單個檢視。我們從 Python 中的 collections 模組匯入它。

使用此方法可以更快地連結元素。這是因為 chainmap 只使用字典的檢視;因此,它不涉及複製資料。

此外,它會在任何時候覆蓋鍵值;因此,可以從輸出中得知資料來源是什麼。

像這樣實現它:

from collections import ChainMap
first_dict = {'a':2, 'b':3, 'c':5}
second_dict = {'c':4, 'e':6, 'f': 7}
a_dictionary = ChainMap(first_dict, second_dict)