Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 키-값 목록을 플랫 딕셔너리로 변환하는 방법

파이썬 프로그래밍을 하다 보면 키와 값이 각각 별도의 리스트로 저장되어 있는 데이터를 하나의 플랫(flat) 딕셔너리로 합쳐야 하는 경우가 자주 발생합니다. 예를 들어 월 번호 리스트와 월 이름 리스트가 따로 있을 때, 이를 {1: 'Jan', 2: 'Feb'} 형태의 단일 딕셔너리로 변환하고 싶다면 내장 함수인 zip()dict()를 조합하면 아주 간단하게 처리할 수 있습니다.

zip() 함수의 동작 원리

zip() 함수는 여러 개의 반복 가능한(iterable) 객체를 인자로 받아, 동일한 인덱스에 위치한 요소들을 튜플(tuple) 형태로 묶어주는 역할을 합니다. 이렇게 생성된 (키, 값) 쌍의 시퀀스를 dict() 생성자에 전달하면 손쉽게 딕셔너리로 변환됩니다.

예제 코드

my_dict = {'month_num': [1, 2, 3, 4, 5, 6], 'name_of_month': ['Jan', 'Feb', 'March', 'Apr', 'May', 'June']}

print("원본 딕셔너리 : ")
print(my_dict)

my_result = dict(zip(my_dict['month_num'], my_dict['name_of_month']))

print("변환된 플랫 딕셔너리 : ")
print(my_result)

실행 결과

원본 딕셔너리 :
{'month_num': [1, 2, 3, 4, 5, 6], 'name_of_month': ['Jan', 'Feb', 'March', 'Apr', 'May', 'June']}
변환된 플랫 딕셔너리 :
{1: 'Jan', 2: 'Feb', 3: 'March', 4: 'Apr', 5: 'May', 6: 'June'}

코드 설명

  • 월 번호(month_num)와 월 이름(name_of_month)을 값으로 가지는 딕셔너리를 정의한 뒤 콘솔에 출력합니다.

  • zip() 메서드를 사용해 두 리스트의 요소들을 (번호, 이름) 쌍으로 묶습니다.

  • dict() 생성자를 통해 묶인 쌍들을 새로운 딕셔너리로 변환합니다.

  • 결과를 변수 my_result에 할당한 후 콘솔에 출력합니다.

딕셔너리 컴프리헨션을 활용한 대안

zip() 외에도 딕셔너리 컴프리헨션(dictionary comprehension)을 사용하면 같은 결과를 얻을 수 있습니다.

my_result = {key: value for key, value in zip(my_dict['month_num'], my_dict['name_of_month'])}

두 방식 모두 결과는 동일하지만, 딕셔너리 컴프리헨션은 변환 과정에서 특정 조건을 추가하거나 값을 가공해야 할 때 더 유연하게 활용할 수 있다는 장점이 있습니다.

마무리

이처럼 파이썬에서는 zip()dict()만으로 별도의 반복문 없이 두 리스트를 깔끔하게 하나의 딕셔너리로 병합할 수 있습니다. 코드가 짧고 가독성이 뛰어나기 때문에 데이터 전처리 작업에서 매우 유용하게 사용되는 패턴이니 꼭 기억해 두시기 바랍니다.