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

Python – 리스트에서 특정 키 값 기준으로 딕셔너리 필터링하는 방법

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)으로 검색 목록을 변환하면 조회 속도를 더욱 향상시킬 수 있습니다.