首頁 >後端開發 >Python教學 >如何在Python中根據自訂條件高效過濾字典?

如何在Python中根據自訂條件高效過濾字典?

DDD
DDD原創
2024-11-11 12:20:02773瀏覽

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

使用自訂條件進行進階字典過濾

本書的範例說明了使用 items()函數進行字典過濾,該過程可以簡化為

字典理解方法:

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
}

效能注意事項:

與手動迭代方法相比,字典理解方法提供了卓越的性能:

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