Python에서 리스트에 담긴 여러 개의 딕셔너리를 특정 키(key)의 값을 기준으로 필터링해야 하는 경우가 자주 있습니다. 예를 들어, 'is'라는 키의 값이 미리 정의된 검색 목록(search_list)에 포함되어 있는 딕셔너리만 골라내고 싶다면, 간단한 반복문과 조건문을 활용하면 됩니다.
예제 코드
아래는 리스트 내 딕셔너리를 특정 키 값 기준으로 필터링하는 방법을 보여주는 예제입니다.
my_list = [{"Python": 2, "is": 4, "cool": 11},
{"Python": 5, "is": 1, "cool": 1},
{"Python": 7, "is": 3, "cool": 7},
{"Python": 9, "is": 9, "cool": 8},
{"Python": 4, "is": 10, "cool": 6}]
print("원본 리스트 :")
print(my_list)
search_list = [1, 9, 8, 4, 5]
key = "is"
my_result = []
for sub in my_list:
if sub[key] in search_list:
my_result.append(sub)
print("필터링 결과 :")
print(my_result)실행 결과
원본 리스트 :
[{'Python': 2, 'is': 4, 'cool': 11}, {'Python': 5, 'is': 1, 'cool': 1}, {'Python': 7, 'is': 3, 'cool': 7}, {'Python': 9, 'is': 9, 'cool': 8}, {'Python': 4, 'is': 10, 'cool': 6}]
필터링 결과 :
[{'Python': 2, 'is': 4, 'cool': 11}, {'Python': 5, 'is': 1, 'cool': 1}, {'Python': 9, 'is': 9, 'cool': 8}]코드 설명
여러 개의 딕셔너리를 담은 리스트를 정의하고 콘솔에 출력합니다.
검색 기준이 될 정수 리스트와 찾고자 하는 키('is')를 각각 변수로 정의합니다.
필터링된 결과를 저장할 빈 리스트를 생성합니다.
for 반복문으로 원본 리스트를 순회하면서, 각 딕셔너리의 해당 키 값이 검색 리스트에 포함되어 있는지 확인합니다.
조건을 만족하는 딕셔너리만 결과 리스트에 추가(append)됩니다.
최종적으로 필터링된 결과가 콘솔에 출력됩니다.
더 간결한 방법: 리스트 컴프리헨션 활용
위의 반복문 코드는 Python의 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 더 간결하게 작성할 수 있습니다.
my_result = [sub for sub in my_list if sub[key] in search_list]
이 방식은 가독성이 뛰어나고 성능 면에서도 일반적인 for 반복문과 거의 동일하므로, 실무에서 더 널리 사용됩니다. 데이터 양이 많아질 경우에는 집합(set)으로 검색 목록을 변환하면 조회 속도를 더욱 향상시킬 수 있습니다.