파이썬 프로그래밍을 하다 보면 리스트를 딕셔너리로 변환해야 하는 경우가 종종 있습니다. 딕셔너리의 각 요소는 키(key)와 값(value)으로 구성된 키-값 쌍이며, 이 글에서는 리스트의 요소들을 키로 사용하고, 값 자리에는 None을 플레이스홀더(자리표시자)로 남겨두는 방법을 소개합니다.
예를 들어, 초기화 작업이나 나중에 값을 채워 넣을 목적으로 빈 값(None)을 가진 딕셔너리를 미리 만들어야 할 때 유용하게 활용할 수 있습니다.
1. dict.fromkeys() 활용하기
파이썬의 dict() 생성자는 딕셔너리를 만들 때 사용됩니다. 특히 fromkeys() 메서드를 함께 사용하면 리스트의 각 요소를 키로 하는 딕셔너리를 손쉽게 생성할 수 있으며, 별도로 값을 지정하지 않으면 기본값으로 None이 할당됩니다.
예제 코드
listA = ["Mon","Tue","Wed","Thu","Fri"]
print("Given list: \n", listA)
res = dict.fromkeys(listA)
# 결과 출력
print("Result:\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list:
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Result:
{'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}2. zip과 dict 조합하기
또 다른 방법으로는 dict() 생성자와 zip() 함수를 함께 사용하는 것입니다. 리스트와 동일한 길이의 None 리스트를 zip으로 묶으면, 각 요소가 키-값 쌍으로 변환됩니다.
예제 코드
listA = ["Mon","Tue","Wed","Thu","Fri"]
print("Given list: \n", listA)
res = dict(zip(listA, [None]*len(listA)))
# 결과 출력
print("Result:\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list:
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Result:
{'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}3. 딕셔너리 컴프리헨션 활용하기
딕셔너리 컴프리헨션(dict comprehension)을 사용하면 더욱 파이썬다운 코드를 작성할 수 있습니다. for 루프를 통해 리스트의 각 요소를 순회하면서 키를 만들고, 값으로 None을 할당합니다.
예제 코드
listA = ["Mon","Tue","Wed","Thu","Fri"]
print("Given list: \n", listA)
res = {key: None for key in listA}
# 결과 출력
print("Result:\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list:
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Result:
{'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}마무리
지금까지 리스트를 None 값을 가진 딕셔너리로 변환하는 세 가지 방법을 살펴보았습니다. 세 방법 모두 동일한 결과를 반환하지만, 상황에 따라 선택 기준이 달라질 수 있습니다.
- dict.fromkeys(): 가장 간결하며, 기본값을 직접 지정할 수도 있습니다. 단, 변경 가능한(mutable) 객체를 기본값으로 사용할 경우 모든 키가 같은 객체를 공유하므로 주의해야 합니다.
- zip + dict: 키와 값 리스트를 각각 관리해야 할 때 유용합니다.
- 딕셔너리 컴프리헨션: 조건문 추가 등 유연한 로직 적용이 가능해 확장성이 뛰어납니다.
간단한 초기화라면 fromkeys()를, 복잡한 로직이 필요하다면 컴프리헨션을 사용하는 것을 추천합니다.