Supprimer des éléments à partir du Dictionnaire<Clé, le Point>
J'ai un Dictionnaire, où les éléments sont (par exemple):
- "A", 4
- "B", 44
- "au revoir", 56
- "C", 99
- "D", 46
- "6672", 0
Et j'ai une Liste:
- "Un"
- "C"
- "D"
Je veux enlever de mon dictionnaire de tous les éléments dont les touches sont pas dans ma liste, et à la fin de mon dictionnaire:
- "A", 4
- "C", 99
- "D", 46
Comment puis-je faire?
OriginalL'auteur Nick | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
Il est plus simple de construire le nouveau Dictionnaire de contenir des éléments qui sont dans la liste:
Si il est important de modifier le dictionnaire déjà existant (par exemple, c'est une propriété en lecture seule de la classe)
Note le ToList() il est important de matérialiser la liste des clés à supprimer. Si vous essayez d'exécuter le code sans la matérialisation de la
keysToRemove
, vous aurez probablement à une exception indiquant quelque chose comme "La collecte a changé".ancien chemin des constructions nouvelles dictionnaire, si vous avez un vieux intact, mais au prix d'une plus grande quantité de mémoire. Plus tard, on modifie existant dictionnaire en place. En un mot, si vous ne travaillez pas sur de vraiment énorme dictionnaires, aucun des avantages et des inconvénients de l'état de programmes ne sont pas équivalentes entre ces deux façons.
OriginalL'auteur J0HN
Maintenant, c'est une bonne question, ce qui est plus efficace, la création d'un nouveau dictionnaire, ou de prendre un certain nombre d'éléments. Je suppose que ça dépend du nombre de personnes concernées, il serait intéressant de mesurer les choses difficiles.
Voici un test de vitesse que j'ai effectué, votre solution contre le mien. Vous pouvez facilement voir que la création d'un dictionnaire est plus efficace, puisque vous n'avez pas itérer sur mySet pour chaque élément dans le dictionnaire: pastebin.com/iY1LHRM1
Les gens vont arrêter de poster ce lien de manière inappropriée? Ce n'est pas prématuré, et il n'est pas "d'optimisation". L'optimisation est l'endroit où vous prenez le code et le modifier un peu pour qu'il effectue un tout petit peu plus rapide. C'est sur un tout autre algorithme, et vous ne pouvez même pas dire que c'est prématuré, parce que tout ce que j'ai ici est l'OP de la question, je ne suis pas en faisant de son projet.
Ce n'est pas l'optimisation prématurée...
OriginalL'auteur Joachim Isaksson
OriginalL'auteur L.B
Code:
Exemple:
De sortie:
OriginalL'auteur SimpleVar