Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Wörterbücher basierend auf benutzerdefinierten Bedingungen in Python effizient filtern?
Erweiterte Wörterbuchfilterung mit benutzerdefinierten Bedingungen
Das Beispiel des Buches veranschaulicht die Wörterbuchfilterung mithilfe der Funktion items(), ein Prozess, der optimiert werden kann Effizienz.
Diktverständnis Methode:
Python bietet hierfür ein leistungsstarkes Werkzeug: das Diktatverständnis. Damit können Sie ein neues Wörterbuch basierend auf vorhandenen Werten erstellen und dabei benutzerdefinierte Bedingungen anwenden. Um beispielsweise ein Wörterbuch mit Punkten zu filtern:
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-Kompatibilität:
In Python 2 (ab 2.7) die Syntax für die Iteration über Wörterbuchelemente ist etwas anders:
points_under_5 = { k: v for k, v in points.iteritems() # Use 'iteritems()' instead of 'items()' if v[0] < 5 and v[1] < 5 }
Leistung Überlegungen:
Der Dict-Comprehension-Ansatz bietet im Vergleich zur manuellen Iterationsmethode eine überlegene Leistung:
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)
Das obige ist der detaillierte Inhalt vonWie kann ich Wörterbücher basierend auf benutzerdefinierten Bedingungen in Python effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!