파이썬은 다양한 데이터 구조를 매우 유연하게 처리할 수 있는 언어입니다. 실무에서는 데이터를 더 효율적으로 활용하거나 분석하기 위해 한 데이터 구조를 다른 구조로 변환해야 하는 경우가 자주 발생합니다. 이번 글에서는 파이썬 집합(set)을 딕셔너리(dictionary)로 변환하는 대표적인 세 가지 방법을 예제 코드와 함께 살펴보겠습니다.
1. zip()과 dict() 함수 활용하기
dict() 함수는 입력받은 매개변수를 딕셔너리 형태로 변환해 줍니다. 여기에 zip() 함수를 함께 사용하면 키 목록과 값 목록을 하나씩 짝지어 묶을 수 있고, 그 결과가 최종적으로 딕셔너리의 키-값 쌍으로 만들어집니다.
예제 코드
list_keys = {1,2,3,4}
list_values = {'Mon','Tue','Wed','Thu'}
new_dict = dict(zip(list_keys, list_values))
print(new_dict)
print(type(new_dict))실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
{1: 'Mon', 2: 'Tue', 3: 'Thu', 4: 'Wed'}
<class 'dict'>주의: 집합(set)은 순서가 없는(unordered) 자료구조이기 때문에, 두 집합을 zip()으로 묶으면 어떤 키와 어떤 값이 연결될지 실행 시점마다 달라질 수 있습니다. 위 출력 결과에서 'Wed'와 'Thu'의 순서가 뒤바뀐 것도 바로 이 때문입니다. 따라서 키와 값의 순서가 중요하다면 리스트(list)를 사용하는 것이 안전합니다.
2. dict.fromkeys() 메서드 활용하기
키는 서로 다르지만 모든 키에 동일한 값을 할당하고 싶을 때는 dict.fromkeys() 메서드가 가장 간편합니다. 첫 번째 인자로 키가 될 집합을, 두 번째 인자로 공통 값을 전달하면 됩니다.
예제 코드
list_keys = {1,2,3,4}
new_dict = dict.fromkeys(list_keys,'Mon')
print(new_dict)
print(type(new_dict))실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
{1: 'Mon', 2: 'Mon', 3: 'Mon', 4: 'Mon'}
<class 'dict'>3. 딕셔너리 컴프리헨션(Dictionary Comprehension) 활용하기
앞선 fromkeys() 방식과 비슷한 결과를 내지만, 딕셔너리 컴프리헨션을 사용하면 값 할당 로직을 더 유연하게 작성할 수 있다는 장점이 있습니다. 조건문이나 표현식을 추가하기도 훨씬 쉽습니다.
예제 코드
list_keys = {1,2,3,4}
new_dict = {element:'Tue' for element in list_keys}
print(new_dict)
print(type(new_dict))실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
{1: 'Tue', 2: 'Tue', 3: 'Tue', 4: 'Tue'}
<class 'dict'>마무리
지금까지 파이썬에서 집합을 딕셔너리로 변환하는 세 가지 방법을 알아보았습니다. 정리하면 다음과 같습니다.
- zip() + dict(): 서로 다른 키와 값을 짝지어 변환할 때 사용 (단, 집합 특성상 순서 보장이 안 됨)
- dict.fromkeys(): 모든 키에 같은 값을 일괄 할당할 때 가장 간결함
- 딕셔너리 컴프리헨션: 값 할당 규칙을 자유롭게 커스터마이징할 수 있음
상황에 맞는 방법을 선택하면 데이터 변환 작업을 훨씬 효율적으로 처리할 수 있습니다.