शब्दकोशों के लिए सेट विधियों के लिए पूर्ण समर्थन करना अच्छा होगा (और हम Python 3.9 के साथ मिल रही अपवित्र गंदगी नहीं) ताकि आप बस कुंजी का एक सेट "हटा" सकें। हालाँकि, जब तक ऐसा नहीं होता है, और आपके पास एक बड़ी डिक्शनरी है जिसमें संभावित रूप से हटाने के लिए बड़ी संख्या में कुंजियाँ हैं, आप प्रदर्शन के बारे में जानना चाह सकते हैं। तो, मैंने कुछ कोड बनाए हैं जो सार्थक तुलना के लिए कुछ बड़ा बनाता है: एक 100,000 x 1000 मैट्रिक्स, इसलिए कुल 10,000,00 आइटम।
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 मिलियन आइटम या अधिक असामान्य नहीं है। अपने स्थानीय मशीन पर दो तरीकों की तुलना करने पर मुझे उपयोग करते समय थोड़ा सुधार दिखाई देता है mapऔर popसंभवत: कम फ़ंक्शन कॉल के कारण, लेकिन दोनों मेरी मशीन पर लगभग 2.5 s लेते हैं। लेकिन यह पहली जगह (55s) में शब्दकोश बनाने के लिए आवश्यक समय की तुलना में या लूप के भीतर चेक सहित शामिल है। यदि यह संभावना है, तो एक सेट बनाने के लिए सबसे अच्छा है जो शब्दकोश कुंजी और आपके फ़िल्टर का एक चौराहा है:
keys = cells.keys() & keys
संक्षेप में: delपहले से ही बहुत अधिक अनुकूलित है, इसलिए इसका उपयोग करने के बारे में चिंता न करें।