Es wäre schön, volle Unterstützung für festgelegte Methoden für Wörterbücher zu haben (und nicht für das unheilige Durcheinander, das wir mit Python 3.9 bekommen), damit Sie einfach einen Satz von Schlüsseln "entfernen" können. Solange dies jedoch nicht der Fall ist und Sie ein großes Wörterbuch mit möglicherweise einer großen Anzahl von Schlüsseln zum Entfernen haben, möchten Sie möglicherweise Informationen zur Leistung erhalten. Also habe ich einen Code erstellt, der etwas erstellt, das groß genug für aussagekräftige Vergleiche ist: eine 100.000 x 1000-Matrix, also insgesamt 10.000,00 Elemente.
from itertools import product
from time import perf_counter
# make a complete worksheet 100000 * 1000
start = perf_counter()
prod = product(range(1, 100000), range(1, 1000))
cells = {(x,y):x for x,y in prod}
print(len(cells))
print(f"Create time {perf_counter()-start:.2f}s")
clock = perf_counter()
# remove everything above row 50,000
keys = product(range(50000, 100000), range(1, 100))
# for x,y in keys:
# del cells[x, y]
for n in map(cells.pop, keys):
pass
print(len(cells))
stop = perf_counter()
print(f"Removal time {stop-clock:.2f}s")
10 Millionen Artikel oder mehr sind in einigen Einstellungen nicht ungewöhnlich. Beim Vergleich der beiden Methoden auf meinem lokalen Computer sehe ich eine leichte Verbesserung bei der Verwendung mapund popvermutlich aufgrund weniger Funktionsaufrufe, aber beide dauern auf meinem Computer ungefähr 2,5 Sekunden. Dies verblasst jedoch im Vergleich zu der Zeit, die erforderlich ist, um das Wörterbuch überhaupt zu erstellen (55 Sekunden) oder Überprüfungen in die Schleife einzubeziehen. Wenn dies wahrscheinlich ist, erstellen Sie am besten eine Menge, die eine Schnittstelle zwischen den Wörterbuchschlüsseln und Ihrem Filter darstellt:
keys = cells.keys() & keys
Zusammenfassend: delist bereits stark optimiert, machen Sie sich also keine Sorgen über die Verwendung.