首页 >后端开发 >Python教程 >创建Python字典时如何处理重复键?

创建Python字典时如何处理重复键?

Barbara Streisand
Barbara Streisand原创
2024-12-13 17:16:09228浏览

How Can I Handle Duplicate Keys When Creating a Python Dictionary?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn