La façon la plus rapide de la suppression de certaines touches du dict en Python

Je suis à la recherche pour la plupart plus rapide/moyen efficace de supprimer certaines touches dans un python dict

Voici quelques options

for k in somedict.keys(): 
    if k.startswith("someprefix"): 
        del somedict[k]

ou

dict((k, v) for (k, v) in somedict.iteritems() if not k.startswith('someprefix'))

Logiquement premier extrait devrait être plus rapide sur les petites dicts, il n'est pas de créer une copie d'un dict, mais crée une liste de toutes les clés, cependant double recherches et dict la reconstruction prend du temps. Tandis que la seconde est plus rapide sur les plus grandes dicts, mais nécessite 2x plus de mémoire.
J'ai vérifié mon hypothèse, dans un petit indice de référence.

Quelque chose de plus rapide?

  • Non, vous ne pouvez pas. Vous ne pouvez pas ajouter ou supprimer des éléments à partir d'un dict vous êtes à parcourir.
  • L'utilisation d'un trie. ___
  • merci, supprimé le commentaire.
  • Un cas particulier: si votre préfixes sont de taille fixe, de maintenir un dict de la liste des préfixes. Ensuite, c'est juste une suppression de toutes les clés dans une liste.