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

Python 딕셔너리에서 특정 키만 추출하는 방법

딕셔너리(Dictionary)는 Python에서 가장 널리 사용되는 자료 구조 중 하나로, 데이터를 키(key)와 값(value)의 형태로 저장합니다. 실무에서는 전체 딕셔너리가 아니라 원하는 키에 해당하는 항목만 골라내야 하는 경우가 자주 발생하는데요. 이 글에서는 주어진 키 집합에 해당하는 항목만 딕셔너리에서 추출하는 다양한 방법을 예제와 함께 살펴보겠습니다.

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

딕셔너리 컴프리헨션(dictionary comprehension)은 가장 간결하고 Python스러운 방식입니다. in 연산자와 함께 for 루프로 딕셔너리의 키를 순회하면서, 추출하고 싶은 키 집합과 교집합에 해당하는 키만 새로운 딕셔너리로 만들어 줍니다.

예제

dictA = {'Sun': '2 PM', "Tue": '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}

# 주어진 딕셔너리 출력
print("Given dictionary : ", dictA)

res = {key: dictA[key] for key in dictA.keys()
& {'Fri', 'Sun'}}

# 결과 출력
print("Dictionary with given keys is : ", res)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given dictionary : {'Sun': '2 PM', 'Tue': '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}
Dictionary with given keys is : {'Fri': '9 PM', 'Sun': '2 PM'}

이 방식의 장점은 한 줄로 처리할 수 있어 가독성이 좋고, 존재하지 않는 키가 섞여 있어도 &(교집합) 연산 덕분에 오류 없이 안전하게 동작한다는 점입니다.

2. dict() 함수 활용하기

두 번째 방법은 dict() 함수에 제너레이터 표현식을 전달하는 방식입니다. 추출하려는 키 목록을 순회하면서 해당 키가 딕셔너리에 존재하는지 확인한 후, 조건을 통과하는 키-값 쌍만으로 새 딕셔너리를 생성합니다.

예제

dictA = {'Sun': '2 PM', "Tue": '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}

# 주어진 딕셔너리 출력
print("Given dictionary : ", dictA)

res = dict((k, dictA[k]) for k in ['Fri', 'Wed']
if k in dictA)

# 결과 출력
print("Dictionary with given keys is : ", res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given dictionary : {'Sun': '2 PM', 'Tue': '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}
Dictionary with given keys is : {'Fri': '9 PM', 'Wed': '3 PM'}

이 방법 역시 if k in dictA 조건을 통해 존재하지 않는 키를 걸러내므로 KeyError 없이 안전하게 동작합니다.

마무리

두 방법 모두 특정 키만 추출하는 데 효과적이지만, 일반적으로는 딕셔너리 컴프리헨션이 더 간결하고 성능 면에서도 유리한 편입니다. 반면 키 목록이 이미 리스트 형태로 존재하거나 복잡한 조건이 필요한 경우에는 dict() 함수와 제너레이터를 조합한 방식이 더 유연하게 활용될 수 있습니다. 상황에 맞게 적절한 방법을 선택해 사용해 보세요.