Python 字典中的重复键
在编程领域,字典通过将唯一键映射到相应的值来组织数据,这被证明是非常宝贵的。然而,标准的Python字典实现遵循严格的原则:每个键在字典中必须保持唯一。在处理数据集中涉及重复键的场景时,此约束带来了挑战。
使用重复键创建字典
假设我们遇到一个包含重复汽车注册的文本文件号码,每个号码都与不同的信息相关联,例如司机姓名、电话分机和停车位置。任务是构建一个字典,以注册号为键,相应的数据为值。以下代码片段说明了一种常见方法:
data_dict = {} data_list = [] def createDictionaryModified(filename): path = "C:\Users\user\Desktop" basename = "ParkingData_Part3.txt" filename = path + "//" + basename file = open(filename) contents = file.read() print(contents, "\n") data_list = [lines.split(",") for lines in contents.split("\n")] for line in data_list: regNumber = line[0] name = line[1] phoneExtn = line[2] carpark = line[3].strip() details = (name, phoneExtn, carpark) data_dict[regNumber] = details print(data_dict, "\n") print(data_dict.items(), "\n") print(data_dict.values())
但是,由于 Python 的默认字典行为,此代码面临一个限制:重复的键会导致覆盖以前的值。为了避免这个问题,一个解决方案是在字典中存储列表或集合。
使用 Collections.defaultdict
Python 标准库为此目的提供了一个有用的工具:集合.defaultdict。此类使用默认工厂初始化字典,确保不存在的键将创建新列表或集合(取决于工厂参数)。
from collections import defaultdict data_dict = defaultdict(list)
要使用重复键填充字典,只需将原来的赋值语句:
data_dict[regNumber] = details
替换为:
data_dict[regNumber].append(details)
这个策略有效地创建了一个列表字典,其中每个键对应于关联值的列表。通过利用 collections.defaultdict,您可以成功处理 Python 字典中的重复键。
以上是创建Python字典时如何处理重复键?的详细内容。更多信息请关注PHP中文网其他相关文章!