Python でカスタム条件に基づいて辞書を効率的にフィルタリングするにはどうすればよいですか?

DDD
リリース: 2024-11-11 12:20:02
オリジナル
764 人が閲覧しました

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

カスタム条件による高度な辞書フィルタリング

この本の例では、items() 関数を使用した辞書フィルタリングを説明しています。このプロセスは効率化できます。効率性。

辞書の理解メソッド:

Python は、この目的のための強力なツールである dict 内包表記を提供します。これを使用すると、カスタム条件を適用しながら、既存の値に基づいて新しい辞書を作成できます。たとえば、ポイントの辞書をフィルタリングするには:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート