파이썬 프로그래밍을 하다 보면 리스트(list)를 딕셔너리(dictionary)로 변환해야 하는 경우가 자주 발생합니다. 이 글에서는 리스트를 효율적으로 딕셔너리로 바꾸는 두 가지 대표적인 방법을 소개합니다.
리스트와 딕셔너리란?
리스트는 데이터 요소들이 순서대로 저장되는 선형 자료구조입니다.
예시
1,2,3,4,5,6
반면 딕셔너리는 키(key) : 값(value) 쌍으로 구성된 자료구조입니다. 각 키는 고유하며(중복 불가), 하나의 값과 연결됩니다.
예시
1:2, 3:4, 5:6
이번 글의 목표는 주어진 리스트를 홀수 번째 요소는 키로, 짝수 번째 요소는 값으로 하는 딕셔너리로 변환하는 것입니다. 위 예시처럼 말이죠.
방법 1 – 반복문으로 순회하기
가장 기본적인 방법은 for 반복문을 사용하는 것입니다. 인덱스를 2씩 건너뛰며 순회하면, 현재 위치의 요소를 키로, 다음 위치의 요소를 값으로 지정할 수 있습니다.
예제 코드
def convert(l):
dic = {}
for i in range(0, len(l), 2):
dic[l[i]] = l[i+1]
return dic
ar = [1, 'Delhi', 2, 'Kolkata', 3, 'Bangalore', 4, 'Noida']
print(convert(ar))실행 결과
{1: 'Delhi', 2: 'Kolkata', 3: 'Bangalore', 4: 'Noida'}range(0, len(l), 2)는 0부터 시작해 2씩 증가하므로, 짝수 인덱스에 있는 요소가 키가 되고 그 뒤의 요소가 값이 됩니다. 코드가 직관적이라 초보자에게 적합한 방식입니다.
방법 2 – zip() 함수 활용하기
더 파이썬다운(Pythonic) 방법은 iter()와 zip()을 조합하는 것입니다. 먼저 iter()로 리스트에 대한 이터레이터를 생성한 후, 같은 이터레이터를 두 번 zip()에 전달하면 인접한 두 요소가 한 쌍으로 묶입니다. 마지막으로 dict()로 타입 변환하면 딕셔너리가 완성됩니다.
예제 코드
def convert(l):
i = iter(l)
dic = dict(zip(i, i))
return dic
ar = [1, 'Delhi', 2, 'Kolkata', 3, 'Bangalore', 4, 'Noida']
print(convert(ar))실행 결과
{1: 'Delhi', 2: 'Kolkata', 3: 'Bangalore', 4: 'Noida'}zip(i, i)는 동일한 이터레이터에서 값을 차례대로 가져오기 때문에, 첫 번째 값을 키로, 두 번째 값을 값으로 묶어줍니다. 단 두 줄의 코드로 처리할 수 있어 간결함이 필요한 상황에서 유용합니다.
마무리
두 방법 모두 동일한 결과를 반환하지만 상황에 따라 선택 기준이 달라집니다. 반복문 방식은 로직을 명확하게 드러내 가독성이 좋고, zip() 방식은 코드가 짧아 간결한 스타일을 선호하는 개발자에게 적합합니다. 리스트 길이가 홀수인 경우 마지막 키-값 쌍이 완성되지 않으므로, 실무에서는 입력 데이터의 유효성 검사도 함께 고려하는 것이 좋습니다.