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
루프의 k
와 v
는 각각 키와 값을 나타냅니다. 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()
를 사용하여 값을 목록으로 변환하고 사전의 값이 대체하는 대신 목록에 추가되도록 조작하십시오. 기존 값.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn