Wie kann ich Wörterbücher basierend auf benutzerdefinierten Bedingungen in Python effizient filtern?

DDD
Freigeben: 2024-11-11 12:20:02
Original
736 Leute haben es durchsucht

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

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage