如何用 Python 创建具有重复键的字典?


在 Python 中,字典不允许重复键或重复的键。因此,我们可以使用来自 集合 模块的 defaultdict。因为它可以以列表或其他任何数据结构的形式存储同一键的多个值。

'collections' 模块中的 'defaultdict'

内置 dict 类的子类,允许我们为不存在的键提供默认值,称为 defaultdict

返回新键的默认值的函数称为 '默认工厂',如果要传递此默认工厂,可以使用 列表,它允许在同一键下存储多个值。

处理重复键

创建具有重复键的字典所涉及的步骤如下。

  • 创建一个以列表作为 默认工厂defaultdict

  • 考虑一个包含重复键的元组列表,并将它们转换为 defaultdict。

  • 将 defaultdict 转换为普通字典

以列表作为默认工厂的 'defaultdict'

我们首先导入 defaultdict 并创建一个 defaultdict(list) 的实例,它在第一次遇到每个键时初始化一个空列表。

from collections import defaultdict
d = defaultdict(list)

初始化列表并转换为 defaultdict

考虑一个包含重复键的元组列表 'l'。使用键来追加值并在该元组列表中循环。

l = [(1, 111), (2, 222), (3, 333), (1, 'aaa'), (2, 'bbb'), (3, 'ccc')]
for k, v in l:
    d[k].append(v)

将 defaultdict 转换为普通字典

使用 dist() 方法,defaultdict 将转换为普通字典。

dict_d = dict(d)
print(dict_d)

最终示例

通过使用此方法,您可以以类似字典的结构在同一键下排列多个值。

from collections import defaultdict

# Create defaultdict
d = defaultdict(list)

# Step 2: List of tuples with duplicate keys
l = [(1, 111), (2, 222), (3, 333), (1, 'aaa'), (2, 'bbb'), (3, 'ccc')]

# Add values to the defaultdict
for k, v in l:
    d[k].append(v)

# Convert defaultdict to a regular dictionary
result = dict(d)
print(result)

输出

{1: [111, 'aaa'], 2: [222, 'bbb'], 3: [333, 'ccc']}

更新于: 2024-10-17

5K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.