カスタム条件による高度な辞書フィルタリング
この本の例では、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 サイトの他の関連記事を参照してください。