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