Python에서는 컬렉션 타입을 다른 타입으로 변환해야 하는 상황이 매우 자주 발생합니다. 이 글에서는 여러 개의 리스트가 주어졌을 때 이를 하나의 딕셔너리로 만드는 방법을 살펴보겠습니다. 핵심은 여러 리스트를 결합하여 모든 값을 키(key)-값(value) 형태의 단일 딕셔너리에 담는 것입니다.
zip 함수 활용하기
zip 함수는 서로 다른 리스트들의 요소를 위치별로 묶어주는 데 사용할 수 있습니다. 아래 예제에서는 세 개의 리스트를 입력받아 하나의 딕셔너리로 결합합니다. 첫 번째 리스트는 딕셔너리의 키를 제공하고, 나머지 두 리스트는 각 키에 대응하는 값들을 담당합니다.
예제
key_list = [1, 2, 3]
day_list = ['Friday', 'Saturday', 'Sunday']
fruit_list = ['Apple', 'Banana', 'Grape']
# 주어진 리스트 출력
print("Given key list : " + str(key_list))
print("Given day list : " + str(day_list))
print("Given fruit list : " + str(fruit_list))
# 딕셔너리 생성
res = {key: {'Day': day, 'Fruit': fruit} for key, day, fruit in
zip(key_list, day_list, fruit_list)}
# 결과 출력
print("The final dictionary : \n" ,res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given key list : [1, 2, 3]
Given day list : ['Friday', 'Saturday', 'Sunday']
Given fruit list : ['Apple', 'Banana', 'Grape']
The final dictionary :
{1: {'Day': 'Friday', 'Fruit': 'Apple'}, 2: {'Day': 'Saturday', 'Fruit': 'Banana'}, 3: {'Day': 'Sunday', 'Fruit': 'Grape'}}enumerate 함수 활용하기
enumerate 함수는 반복 가능한 객체를 순회할 때 인덱스(카운터)를 함께 생성해 줍니다. 따라서 key_list를 매개변수로 전달하면 각 요소와 그 인덱스를 동시에 얻을 수 있고, 이 인덱스를 활용해 day_list와 fruit_list에서 같은 위치의 값을 가져와 딕셔너리를 구성할 수 있습니다.
예제
key_list = [1, 2, 3]
day_list = ['Friday', 'Saturday', 'Sunday']
fruit_list = ['Apple', 'Banana', 'Grape']
# 주어진 리스트 출력
print("Given key list : " + str(key_list))
print("Given day list : " + str(day_list))
print("Given fruit list : " + str(fruit_list))
# 딕셔너리 생성
res = {val : {"Day": day_list[key], "Fruit": fruit_list[key]}
for key, val in enumerate(key_list)}
# 결과 출력
print("The final dictionary : \n" ,res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given key list : [1, 2, 3]
Given day list : ['Friday', 'Saturday', 'Sunday']
Given fruit list : ['Apple', 'Banana', 'Grape']
The final dictionary :
{1: {'Day': 'Friday', 'Fruit': 'Apple'}, 2: {'Day': 'Saturday', 'Fruit': 'Banana'}, 3: {'Day': 'Sunday', 'Fruit': 'Grape'}}정리
zip 함수는 여러 리스트를 병렬로 묶을 때 가장 직관적이며, enumerate 함수는 인덱스 기반으로 다른 리스트의 값을 참조해야 할 때 유용합니다. 두 방법 모두 딕셔너리 컴프리헨션(dictionary comprehension)과 함께 사용하면 간결하고 가독성 높은 코드로 여러 리스트를 하나의 딕셔너리로 변환할 수 있습니다.