파이썬에서 리스트(list)는 여러 값을 순서대로 담는 자료구조인 반면, 딕셔너리(dictionary)는 키(key)와 값(value)이 한 쌍을 이루는 형태로 데이터를 저장합니다. 이 글에서는 서로 다른 두 개의 리스트를 하나로 묶어 딕셔너리로 변환하는 대표적인 세 가지 방법을 예제 코드와 함께 소개합니다.
1. for문과 remove() 활용
두 개의 중첩된 for 루프를 사용하는 방식입니다. 내부 루프에서 한 리스트의 요소를 딕셔너리의 키로 할당하고, 외부 루프가 진행되는 동안 해당 값을 리스트에서 제거하며 처리합니다.
예제
listK = ["Mon", "Tue", "Wed"]
listV = [3, 6, 5]
# 주어진 리스트
print("List of K : ", listK)
print("list of V : ", listV)
# 빈 딕셔너리 생성
res = {}
# 딕셔너리로 변환
for key in listK:
for value in listV:
res[key] = value
listV.remove(value)
break
print("Dictionary from lists :\n ",res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
('List of K : ', ['Mon', 'Tue', 'Wed'])
('list of V : ', [3, 6, 5])
('Dictionary from lists :\n ', {'Wed': 5, 'Mon': 3, 'Tue': 6})2. for문과 range() 활용
두 리스트를 for 루프에 넣어 키-값 쌍을 만드는 방식입니다. range()와 len() 함수를 사용하여 모든 키-값 쌍이 생성될 때까지 요소의 개수를 추적합니다. 딕셔너리 컴프리헨션(dict comprehension) 문법을 활용하면 코드를 더욱 간결하게 작성할 수 있습니다.
예제
listK = ["Mon", "Tue", "Wed"]
listV = [3, 6, 5]
# 주어진 리스트
print("List of K : ", listK)
print("list of V : ", listV)
# 딕셔너리로 변환
res = {listK[i]: listV[i] for i in range(len(listK))}
print("Dictionary from lists :\n ",res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
('List of K : ', ['Mon', 'Tue', 'Wed'])
('list of V : ', [3, 6, 5])
('Dictionary from lists :\n ', {'Wed': 5, 'Mon': 3, 'Tue': 6})3. zip() 함수 활용
zip() 함수는 앞선 방법들과 유사하게 두 리스트의 요소들을 하나씩 짝지어 키-값 쌍을 만듭니다. dict() 생성자와 함께 사용하면 단 한 줄로 변환이 가능하며, 가장 간결하고 파이썬다운(Pythonic) 방법으로 널리 권장됩니다.
예제
listK = ["Mon", "Tue", "Wed"]
listV = [3, 6, 5]
# 주어진 리스트
print("List of K : ", listK)
print("list of V : ", listV)
# 딕셔너리로 변환
res = dict(zip(listK, listV))
print("Dictionary from lists :\n ",res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
('List of K : ', ['Mon', 'Tue', 'Wed'])
('list of V : ', [3, 6, 5])
('Dictionary from lists :\n ', {'Wed': 5, 'Mon': 3, 'Tue': 6})마무리
세 가지 방법 모두 동일한 결과를 얻을 수 있지만, 실무에서는 zip() 함수를 사용하는 방법이 코드가 가장 짧고 가독성이 뛰어나 일반적으로 권장됩니다. 다만 두 리스트의 길이가 다를 경우 zip()은 남는 요소를 무시한다는 점에 유의해야 하며, 이러한 상황에서는 itertools 모듈의 zip_longest() 함수를 활용하면 됩니다.