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

Python에서 리스트를 딕셔너리로 변환하는 방법

파이썬 프로그래밍을 하다 보면 리스트(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() 방식은 코드가 짧아 간결한 스타일을 선호하는 개발자에게 적합합니다. 리스트 길이가 홀수인 경우 마지막 키-값 쌍이 완성되지 않으므로, 실무에서는 입력 데이터의 유효성 검사도 함께 고려하는 것이 좋습니다.