Supprimer certaines clés d'un dictionnaire en python
Je suis en train de construire un dictionnaire qui contient une série de jeux de:
{Field1:{Value1, Value2, Value3}, Field2{Value4}}
Le problème, c'est, ensuite, je souhaite supprimer tous les champs du dictionnaire, qui ont qu'une seule valeur dans le jeu. J'ai écrit un code comme ceci:
for field in FieldSet:
if len(FieldSet[field]) == 1:
del(FieldSet[field])
Mais recevez le message d'erreur "RuntimeError: dictionnaire changé de taille au cours de l'exécution". (Pas étonnant, puisque c'est ce que je fais.) Ce n'est pas l'être-ensemble et à la fin-tout si je dois frapper ensemble, une sorte de solution de contournement, mais est-il possible de faire cela?
source d'informationauteur Margaret
Vous devez vous connecter pour publier un commentaire.
Itérer sur la valeur de retour de
.les touches()
à la place. Puisque vous obtenez une liste de clés, il ne sera pas touchée par l'évolution de la dictionnaire après que vous avez appelé.Un parfois-alternative préférable à l'évolution de la
FieldSet
en place est parfois (en fonction de la quantité de modifications effectuées) pour construire un nouveau et de le lier à l'existant nom:Il y a la méthode pop. Elle supprime l'élément que l'un des principaux appels. Quant à votre exemple, cela ressemble à:
C'est en python 3.2, mais je ne suis pas sûr si c'est une nouvelle fonctionnalité:
http://docs.python.org/dev/library/stdtypes.html#dict.pop
L'ai essayé et il fonctionne comme annoncé.