> 백엔드 개발 > 파이썬 튜토리얼 > Python 사전을 생성할 때 중복 키를 어떻게 처리할 수 있나요?

Python 사전을 생성할 때 중복 키를 어떻게 처리할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-13 17:16:09
원래의
227명이 탐색했습니다.

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 표준 라이브러리는 이러한 목적에 유용한 도구를 제공합니다. collections.defaultdict. 이 클래스는 기본 팩토리로 사전을 초기화하여 존재하지 않는 키가 새 목록이나 세트를 생성하도록 보장합니다(팩토리 인수에 따라 다름).

from collections import defaultdict

data_dict = defaultdict(list)
로그인 후 복사

중복 키로 사전을 채우려면 간단히 원래 할당문을

data_dict[regNumber] = details
로그인 후 복사

다음으로 대체:

data_dict[regNumber].append(details)
로그인 후 복사

이 전략은 효과적으로 목록 사전을 생성합니다. 여기서 각 키는 관련 값 목록에 해당합니다. collections.defaultdict를 활용하면 Python 사전에서 중복 키를 성공적으로 처리할 수 있습니다.

위 내용은 Python 사전을 생성할 때 중복 키를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿