sto cercando più veloce/modo efficace per l'eliminazione di alcuni tasti in un pitone dictmodo più veloce di eliminare alcune chiavi da dict in Python
Qui ci sono alcune opzioni
for k in somedict.keys():
if k.startswith("someprefix"):
del somedict[k]
o
dict((k, v) for (k, v) in somedict.iteritems() if not k.startswith('someprefix'))
Logicamente, il primo snippet dovrebbe essere più veloce su dict più piccoli, non crea una copia di un dict ma crea un elenco di tutte le chiavi, tuttavia le doppie ricerche e la ricostruzione di dettare richiedono molto tempo. Mentre il secondo è più veloce su dit più grandi, ma richiede 2x memoria in più. Ho verificato la mia ipotesi in un piccolo benchmark.
Qualcosa di più veloce?
@Adam: No, non è possibile. Non è possibile aggiungere o rimuovere elementi da un dettato che si sta iterando. –
Utilizzare un trie. ___ – kennytm
@ Ignacio: grazie, commento eliminato. – bernie