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

파이썬(Python) 딕셔너리에서 특정 키만 필터링하는 방법

파이썬에서 딕셔너리(dictionary)를 다루다 보면 특정 조건에 맞는 키만 골라내야 하는 경우가 종종 발생합니다. 예를 들어 전체 데이터 중에서 필요한 항목만 추출하거나, 불필요한 키를 제거한 새로운 결과를 만들어야 할 때가 그렇습니다. 이 글에서는 파이썬 딕셔너리에서 원하는 키를 필터링하는 대표적인 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.

1. for 문과 in 연산자 활용

가장 직관적인 방법은 필터링할 키들을 리스트에 담아두고, 리스트의 각 요소를 순회하면서 해당 키가 딕셔너리에 존재하는지 확인하는 것입니다. 존재하는 키에 한해서만 값을 추출하여 최종 결과를 만들게 됩니다.

예제 코드

dictA = {'Mon':'Phy','Tue':'chem','Wed':'Math','Thu':'Bio'}
key_list = ['Tue','Thu']

print("Given Dictionary:\n",dictA)
print("Keys for filter:\n",key_list)
res = [dictA[i] for i in key_list if i in dictA]

print("Filtered result:\n",res)

실행 결과

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

Given Dictionary:
    {'Mon': 'Phy', 'Tue': 'chem', 'Wed': 'Math', 'Thu': 'Bio'}
Keys for filter:
    ['Tue', 'Thu']
Filtered result:
    ['chem', 'Bio']

리스트 컴프리헨션(list comprehension) 안에서 if i in dictA 조건을 사용했기 때문에, key_list에 존재하지 않는 키가 포함되어 있어도 KeyError 없이 안전하게 처리됩니다.

2. 집합 교집합(intersection) 활용

두 번째 방법은 집합(set)의 교집합을 이용하는 것입니다. 딕셔너리와 키 리스트 사이의 공통 요소를 찾은 뒤, set() 함수로 중복 없는 요소를 구하고 그 결과를 리스트로 변환하여 값을 추출합니다.

예제 코드

dictA = {'Mon':'Phy','Tue':'chem','Wed':'Math','Thu':'Bio'}
key_list = ['Tue','Thu']

print("Given Dictionary:\n",dictA)
print("Keys for filter:\n",key_list)

temp = list(set(key_list).intersection(dictA))

res = [dictA[i] for i in temp]

print("Filtered result:\n",res)

실행 결과

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

Given Dictionary:
    {'Mon': 'Phy', 'Tue': 'chem', 'Wed': 'Math', 'Thu': 'Bio'}
Keys for filter:
    ['Tue', 'Thu']
Filtered result:
    ['chem', 'Bio']

단, 집합은 순서를 보장하지 않기 때문에 결과 리스트의 요소 순서가 입력 순서와 다를 수 있다는 점에 유의해야 합니다. 순서가 중요하다면 첫 번째 방법을 사용하는 것이 좋습니다.

3. 딕셔너리 컴프리헨션으로 키-값 쌍 유지하기

앞선 두 방법은 값(value)만 리스트로 추출합니다. 만약 필터링된 결과도 딕셔너리 형태로 유지하고 싶다면 딕셔너리 컴프리헨션을 활용하면 됩니다.

예제 코드

dictA = {'Mon':'Phy','Tue':'chem','Wed':'Math','Thu':'Bio'}
key_list = ['Tue','Thu']

res = {k: v for k, v in dictA.items() if k in key_list}

print(res)  # {'Tue': 'chem', 'Thu': 'Bio'}

이 방식은 원본 딕셔너리의 순서와 키-값 구조를 그대로 유지하면서 필요한 항목만 남길 수 있어 실무에서 가장 널리 사용됩니다.

마무리

파이썬 딕셔너리의 키 필터링은 상황에 따라 적절한 방법을 선택하면 됩니다. 간단한 값 추출에는 리스트 컴프리헨션, 대량의 키 비교에는 집합 교집합, 키-값 쌍을 유지해야 한다면 딕셔너리 컴프리헨션을 활용하는 것이 효율적입니다.