Python

[Python] filter - iterable 조건 필터링

비번변경 2024. 12. 11. 16:46

개요

현재 Python 개발을 진행 중인데, 딕셔너리의 키가 특정 조건을 만족하는 것만 필터링하려고 한다. 적당한 방법을 찾아보다 python 내장 함수인 filter 함수에 대해 알게 되어 기록해 둔다.

 

 

filter

특정 조건을 만족하는 요소들로 이루어진 iterator를 반환한다.

filter(function, iterable)

 

바로 사용 예시를 보는 편이 이해하기 좋을 것 같다. 다음과 같은 숫자로 이루어진 리스트가 있다고 하자.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

이 리스트에서 짝수에 해당하는 값만 추출하고 싶다. 그러면 아래와 같이 짝수인 경우가 참이 되는 함수를 정의하여 전달하면 된다.

def is_even(num):
    return num % 2 == 0

filtered = filter(is_even, numbers)

 

조건에 해당하는 함수는 람다 함수를 사용해도 된다.

 

 

딕셔너리 키 필터

filter 함수를 이용해 딕셔너리의 키가 특정 조건을 만족하는 키, 값으로 이루어진 딕셔너리를 추출해 보자.

test_data = {k:k for k in range(5)}

print(dict(filter(lambda i: i[0] % 2==0, test_data.items())))

키와 값을 포함하여 딕셔너리를 필터링한 뒤, 딕셔너리로 변환하는 방식이다.

 

 

참고 문서

https://docs.python.org/3/library/functions.html#filter

https://wikidocs.net/22803

[Python] filter() 함수 사용법