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


在Python中,字典不允许重复键。因此,我们可以使用来自Collections 模块的**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转换为普通字典

使用`dict()`方法,将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.