>백엔드 개발 >파이썬 튜토리얼 >Python에서 사용자 정의 조건을 기반으로 사전을 효율적으로 필터링하려면 어떻게 해야 합니까?

Python에서 사용자 정의 조건을 기반으로 사전을 효율적으로 필터링하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-11 12:20:02804검색

How can I efficiently filter dictionaries based on custom conditions in Python?

사용자 정의 조건을 사용한 고급 사전 필터링

이 책의 예제에서는 항목() 함수를 사용한 사전 필터링을 보여줍니다. 효율성.

사전 이해 방법:

Python은 이러한 목적을 위한 강력한 도구인 사전 이해를 제공합니다. 이를 사용하면 사용자 지정 조건을 적용하면서 기존 값을 기반으로 새 사전을 만들 수 있습니다. 예를 들어, 점 사전을 필터링하려면:

points = {'a': (3, 4), 'b': (1, 2), 'c': (5, 5), 'd': (3, 3)}

points_under_5 = {
    k: v
    for k, v in points.items()  # Iterate over (key, value) pairs
    if v[0] < 5 and v[1] < 5  # Filter based on condition
}

Python 2 호환성:

Python 2(2.7 이상)에서 사전 항목을 반복하는 구문은 다음과 같습니다. 약간 다릅니다:

points_under_5 = {
    k: v
    for k, v in points.iteritems()  # Use 'iteritems()' instead of 'items()'
    if v[0] < 5 and v[1] < 5
}

성능 고려 사항:

dict comprehension 접근 방식은 수동 반복 방법에 비해 우수한 성능을 제공합니다.

import timeit

# Manual iteration
manual_time = timeit.timeit(
    """
points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)}
points_small={}
for item in [i for i in points.items() if i[1][0]<5 and i[1][1]<5]:
    points_small[item[0]]=item[1]
""", number=1000000
)

# Dict comprehension
dict_time = timeit.timeit(
    """
points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)}
points_under_5 = {k:v for k, v in points.items() if v[0]<5 and v[1]<5}
""", number=1000000
)

print("Manual iteration time:", manual_time)
print("Dict comprehension time:", dict_time)

위 내용은 Python에서 사용자 정의 조건을 기반으로 사전을 효율적으로 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.