중복 값을 가진 딕셔너리 반전

Beginner

This tutorial is from open-source community. Access the source code

소개

딕셔너리는 Python 에서 키 - 값 쌍을 저장할 수 있는 기본적인 데이터 구조입니다. 때로는 딕셔너리를 반전시켜야 할 필요가 있는데, 이는 키와 값을 서로 바꿔서 값이 키가 되고 키가 값이 되도록 하는 것을 의미합니다. 이 챌린지에서는 고유하지 않은 해시 가능한 (hashable) 값을 가진 딕셔너리를 반전시키는 함수를 작성하는 과제를 수행하게 됩니다.

딕셔너리 반전

입력으로 딕셔너리 obj를 받아 키와 값을 반전시킨 새로운 딕셔너리를 반환하는 함수 invert_dictionary(obj)를 작성하십시오. 입력 딕셔너리는 고유하지 않은 해시 가능한 (hashable) 값을 가집니다. 두 개 이상의 키가 동일한 값을 갖는 경우, 함수는 출력 딕셔너리의 리스트에 키를 추가해야 합니다.

이 문제를 해결하기 위해 다음 단계를 따를 수 있습니다.

  1. 각 키에 대한 기본값으로 list를 사용하는 collections.defaultdict를 생성합니다.
  2. dictionary.items()를 루프와 함께 사용하여 딕셔너리의 값을 dict.append()를 사용하여 키에 매핑합니다.
  3. dict()를 사용하여 collections.defaultdict를 일반 딕셔너리로 변환합니다.

함수 시그니처: def invert_dictionary(obj: dict) -> dict:

from collections import defaultdict

def collect_dictionary(obj):
  inv_obj = defaultdict(list)
  for key, value in obj.items():
    inv_obj[value].append(key)
  return dict(inv_obj)
ages = {
  'Peter': 10,
  'Isabel': 10,
  'Anna': 9,
}
collect_dictionary(ages) ## { 10: ['Peter', 'Isabel'], 9: ['Anna'] }

요약

이 챌린지에서는 고유하지 않은 해시 가능한 (hashable) 값을 가진 딕셔너리를 반전시키는 방법을 배웠습니다. 각 키에 대한 기본값으로 list를 사용하는 collections.defaultdict를 사용한 다음, dict.append()를 사용하여 딕셔너리의 값을 키에 매핑했습니다. 마지막으로, dict()를 사용하여 collections.defaultdict를 일반 딕셔너리로 변환했습니다.