Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Wörterbücher basierend auf benutzerdefinierten Bedingungen in Python effizient filtern?

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

DDD
DDDOriginal
2024-11-11 12:20:02804Durchsuche

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
}

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!

Stellungnahme:
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