如何用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']}
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP