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

파이썬에서 두 개의 리스트를 딕셔너리로 변환하는 방법

파이썬에서 두 개의 리스트를 하나의 딕셔너리로 합치는 가장 쉬운 방법은 내장 함수 zip()을 활용하는 것입니다. zip() 함수는 두 리스트에서 각각 요소를 하나씩 가져와 튜플(tuple)로 묶어주는 제너레이터(generator) 객체를 반환합니다. 이 zip 객체를 내장 함수 dict()에 전달하면 손쉽게 딕셔너리로 변환할 수 있습니다.

zip()과 dict() 함수 사용하기

아래 예제에서 첫 번째 리스트는 키(key) 역할을 하고, 두 번째 리스트는 값(value) 역할을 하여 하나의 딕셔너리로 결합됩니다.

>>> l1 = ['name', 'age', 'marks']
>>> l2 = ['Ravi', 23, 56]
>>> z = zip(l1, l2)
>>> newdict = dict(z)
>>> newdict
{'name': 'Ravi', 'age': 23, 'marks': 56}

zip(l1, l2)가 반환하는 제너레이터에는 ('name', 'Ravi'), ('age', 23), ('marks', 56)과 같은 튜플들이 담겨 있으며, dict() 함수는 이 튜플들을 그대로 키-값 쌍으로 변환해 줍니다.

딕셔너리 컴프리헨션 활용하기

변환 과정에서 추가적인 가공이 필요하다면 딕셔너리 컴프리헨션(dictionary comprehension)을 사용할 수도 있습니다.

>>> newdict = {k: v for k, v in zip(l1, l2)}
>>> newdict
{'name': 'Ravi', 'age': 23, 'marks': 56}

알아두면 좋은 점

  • 두 리스트의 길이가 다르면 zip()은 더 짧은 쪽을 기준으로 매핑하며, 나머지 요소는 무시됩니다.
  • 파이썬 3.10 이상에서는 strict=True 옵션을 사용해 길이가 일치하지 않을 때 오류를 발생시킬 수 있습니다.
  • zip 객체는 한 번만 순회 가능한 제너레이터이므로, 재사용이 필요하다면 미리 리스트나 딕셔너리로 변환해 두는 것이 좋습니다.