扩展 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)