매일 업데이트
2022-11-24 23:39 4 min

Python에서 목록을 사전으로 변환

파이썬에서 리스트를 딕셔너리로 바꾸는 것은 생각보다 복잡하지 않습니다.

리스트를 딕셔너리로 변환하는 여러 가지 방법을 자세히 살펴보겠습니다.

소개

본격적인 학습에 들어가기 전에, 리스트를 딕셔너리로 바꾸는 상황을 먼저 이해해 보겠습니다. 여기에는 두 가지 주요 경우가 있습니다. 첫째, 각 튜플이 두 개의 요소로 이루어진 튜플들의 리스트가 있을 수 있습니다. 둘째, 단순히 요소들의 리스트만 있을 수 있습니다. 이 두 가지 종류의 입력을 받아서 딕셔너리로 변환하는 방법을 알아볼 것입니다.

예시:

다음 예시에서는 튜플 리스트를 받아 딕셔너리로 변환합니다. 각 튜플의 첫 번째 요소는 딕셔너리의 키로, 두 번째 요소는 해당 키에 대한 값으로 사용됩니다.

입력: list_one = [(‘a’, ‘A’), (‘b’, ‘B’), (‘c’, ‘C’)]

출력: {‘a’: ‘A’, ‘b’: ‘B’, ‘c’: ‘C’}

또 다른 예시로, 일반 요소 리스트를 딕셔너리로 변환하는 방법을 보여드립니다. 여기서는 리스트의 요소들을 키와 값으로 번갈아 가면서 사용합니다. 리스트의 요소 수가 홀수여서 키로 사용할 요소가 부족하면, 해당 값에는 null을 할당합니다.

입력: list_one = [‘a’, ‘A’, ‘b’, ‘B’, ‘c’, ‘C’, ‘d’]

출력: {‘a’: ‘A’, ‘b’: ‘B’, ‘c’: ‘C’, ‘d’: None}

이제 튜토리얼의 목표를 명확히 이해하셨을 것입니다. 각각 다른 방식으로 두 가지 예시를 자세히 살펴보겠습니다. 먼저 튜플 리스트를 다루는 것부터 시작합니다.

튜플 리스트를 딕셔너리로 변환하기

튜플 리스트를 딕셔너리로 바꾸는 방법을 자세히 알아보겠습니다. 아래 단계를 따라 코드를 직접 작성해 볼 수 있습니다.

  • 먼저, 예시에서 보여드린 것처럼 더미 데이터를 사용하여 튜플 리스트를 초기화합니다. (각 튜플이 정확히 두 개의 요소를 가지고 있는지 확인해야 합니다.)
  • 다음으로, 이 튜플 리스트를 `dict()` 메서드에 전달하여 결과를 새로운 변수에 저장합니다.
  • 이것으로 끝입니다! 단 한 줄의 코드로 튜플 리스트를 딕셔너리로 변환할 수 있습니다.
# 튜플 리스트
list_of_tuples = [('a', 'A'), ('b', 'B'), ('c', 'C')]

# 딕셔너리로 변환
list_of_tuples_dict = dict(list_of_tuples)

# 결과 딕셔너리 출력
print(list_of_tuples_dict)

위 코드를 실행해서 결과를 확인해 보면, 예시에서 보여드린 것과 동일한 결과를 얻을 수 있습니다.

일반 리스트를 딕셔너리로 변환하기

앞서 튜플 리스트를 딕셔너리로 바꾸는 간단한 방법을 알아보았습니다. 이제는 일반 리스트를 딕셔너리로 변환하는 방법을 살펴볼 차례입니다.

이해를 돕기 위해, 튜토리얼 서두에서 보여드린 두 번째 예시를 참고하시면 됩니다.

아래 단계를 따라서 두 번째 예시에 대한 코드를 작성해 보세요.

요소가 부족한 경우 (리스트의 요소 개수가 홀수일 때) 기본값으로 `None`을 채워 넣었습니다. 이를 위해서는 `itertools` 모듈의 `zip_longest` 메서드를 사용해야 합니다.

  • 먼저 `itertools` 모듈을 불러오고, 예시에 나온 것처럼 홀수 개의 요소를 가진 리스트를 초기화합니다.
  • `zip_longest` 메서드에서 키와 값의 쌍을 반복적으로 가져오기 위해 리스트를 이터러블 객체로 변환합니다.
  • 이제 이 이터러블 객체를 `zip_longest` 메서드에 전달하고, 값이 없는 경우 `None`으로 채우도록 설정합니다. 이때 `zip` 객체가 반환됩니다.
    • `zip_longest`는 두 개의 이터러블 객체에서 키와 값을 가져오므로, 우리의 경우에는 동일한 이터러블 객체를 두 번 전달해야 합니다. 즉, `fillvalue` 설정 전에 동일한 이터러블 객체를 두 번 전달해야 합니다.
  • `dict()` 메서드를 사용하여 이 객체를 파이썬 딕셔너리로 변환합니다.
  • 결과를 출력합니다.
# 모듈 임포트
import itertools

# 홀수 개의 요소를 가진 일반 리스트
plain_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd']

# 반복을 피하기 위해 이터러블 객체로 변환
plain_list_iter = iter(plain_list)

# 리스트를 딕셔너리로 변환
plain_list_dict_object = itertools.zip_longest(plain_list_iter, plain_list_iter, fillvalue=None)

# zip_longest 객체를 dict를 사용해 딕셔너리로 변환
plain_list_dict = dict(plain_list_dict_object)

# 출력
print(plain_list_dict)

원하는 대로 `fillvalue` 값을 바꿀 수 있습니다. 다양한 값으로 시도해 보시고, 코드를 실행하여 예시에서 보셨던 것과 동일한 출력을 얻을 수 있는지 확인해 보세요.

결론

리스트를 딕셔너리로 변환하는 과정이 즐거우셨기를 바랍니다. 다음 튜토리얼에서 다시 만나요.

다음에는 파이썬에서 리스트를 평탄화하는 방법을 배우게 될 것입니다.

즐거운 코딩 하세요! 🙂

이 기사가 재미있으셨나요? 이 내용을 다른 사람들과 공유해 보는 건 어떠세요?

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.