HOWTO · Python

Python에서 사전 반전

Python에서 사전의 키-값 쌍을 반전하는 방법을 보여줍니다.

이 페이지의 내용

이 기사는 Python의 사전을 반전하는 다양한 방법을 보여줍니다.

사전을 반전하는 것은 목록을 반전하는 것과 다릅니다. 즉, 사전의 키 및 값 요소를 반전하거나 전환하여 개발자가 어떤 용도로든 사용할 수 있도록 기본적으로 교체합니다.

파이썬에서 사전을 되돌리려면items()를 사용하세요

파이썬 사전에는 튜플 형태로 사전의 키-값 쌍을 표시하는 반복 가능한 객체를 반환하는items()라는 내장 함수가 있습니다.

예를 들어, 무작위 카테고리의 사전을 선언하고items()를 사용하여 출력합니다.

dct = {
    "Animal": "Dog",
    "Fruit": "Pear",
    "Vegetable": "Cabbage",
    "Tree": "Maple",
    "Flower": "Daisy",
}

print(dct.items())

출력:

dict_items([('Animal', 'Dog'), ('Fruit', 'Pear'), ('Vegetable', 'Cabbage'), ('Tree', 'Maple'), ('Flower', 'Daisy')])

items()를 사용하여 사전을 인쇄하면 사전에 대한for 루프를 사용하여 조작 할 수있는 반복 가능한 튜플 값 목록이 출력됩니다.

items()의 결과를 반복하고 키와 값을 전환하여 키-값 쌍을 반전합니다.

dct = {v: k for k, v in dct.items()}
print(dct)

for루프의 kv는 각각 키와 값을 나타냅니다. v: k는 이전 값v를 새 키로 설정하고 이전 키k를 새 값으로 설정했지만 각 반복에서 키와 값에 대한 자리 표시 자입니다.

출력:

{'Dog': 'Animal', 'Pear': 'Fruit', 'Cabbage': 'Vegetable', 'Maple': 'Tree', 'Daisy': 'Flower'}

이제 키 및 값 요소가 출력에서 반전됩니다.

역방향 사전의 동일한 값 키

딕셔너리를 반전 할 때 또 다른 예제 시나리오는 동일한 값을 가진 여러 키 또는 값이있는 경우입니다. 이것은 사전을 반전시킬 가능성이 더 높은 시나리오입니다.

예를 들어, 사람들이 좋아하는 동물의 사전입니다.

favAnimal = {
    "John": "Dog",
    "Jane": "Cat",
    "Jerome": "Lion",
    "Jenny": "Dog",
    "Jared": "Giraffe",
    "James": "Dog",
}

위의 코드를 사용하여 사전을 반전하면 출력이 예상 한대로되지 않습니다.

favAnimal = {v: k for k, v in favAnimal.items()}
print(favAnimal)

출력:

{'Dog': 'James', 'Cat': 'Jane', 'Lion': 'Jerome', 'Giraffe': 'Jared'}

여기에서는 키 또는 값이 루프에서 반복 될 때마다 기존 레코드를 덮어 쓰므로 원본 사전의 2 개 요소가 누락되었습니다.

사전에 Dog값 쌍을 가진 3 명이 포함되어 있지만 Dog값이있는 마지막 레코드이고 다른 2 개의 사전 항목을 덮어 썼기 때문에 James만 복사되었습니다.

이 문제를 해결하려면 단일 키에 할당되도록 값을 목록에 저장해야합니다.

전체 예제 코드 :

favAnimal = {
    "John": "Dog",
    "Jane": "Cat",
    "Jerome": "Lion",
    "Jenny": "Dog",
    "Jared": "Giraffe",
    "James": "Dog",
}

favAnimal = {v: k for k, v in favAnimal.items()}

print(favAnimal)

파이썬에서 사전을 되돌리려면collections.defaultdict()를 사용하십시오

모듈 collections에는 Python의 사전에있는 값을 조작 할 수있는 defaultdict()함수가 있습니다.

defaultdict()는 주로 존재하지 않는 키의 기본값을 만드는 데 사용됩니다. 존재하지 않는 키에 액세스하면 존재하지 않더라도 기본값을 선언 할 수 있습니다.

이 함수는 목록 데이터 유형의 값으로 새 사전을 인스턴스화하려는 경우에 유용합니다.

동일한 예제favAnimal을 사용하여 사전을 반전하고 값을 목록으로 변환합니다.

먼저defaultdict()를 사용하여 새 사전을 초기화합니다.

from collections import defaultdict

favAnimal_inverted = defaultdict(list)

다음으로 반전에 대한 목록 이해력을 사용하고 반전 된 값을 새 사전에 저장합니다.

{favAnimal_inverted[v].append(k) for k, v in favAnimal.items()}

마지막으로,defaultdict()는 딕셔너리의 일종의 서브 클래스를 생성하므로dict()로 래핑하여 기본 딕셔너리 유형으로 다시 변환합니다.

result = dict(favAnimal_inverted)
print(result)

출력:

{'Dog': ['John', 'Jenny', 'James'], 'Cat': ['Jane'], 'Lion': ['Jerome'], 'Giraffe': ['Jared']}

John, Jenny, James는 이제 값이 Dog인 마지막 요소가 다른 요소를 덮어 쓰는 대신 Dog키가있는 동일한 목록에 있습니다.

전체 예제 코드 :

from collections import defaultdict

favAnimal_inverted = defaultdict(list)
result = dict(favAnimal_inverted)
print(result)

요약하면items()를 사용하여 사전을 반복하고 키와 값을 반전합니다. 혹시라도 데이터 세트에 중복이있을 가능성이있는 경우defaultdict()를 사용하여 값을 목록으로 변환하고 사전의 값이 대체하는 대신 목록에 추가되도록 조작하십시오. 기존 값.