Comment filtrer un dictionnaire en Python?
d = {'foo': 'x',
'bar': 'y',
'zoo': 'None',
'foobar': 'None'}
Je veux filtrer tous les articles dont la valeur est 'None'
et mise à jour de la foo
et bar
éléments avec une valeur particulière. J'ai essayé:
for i in x.items():
....: if i[i] == 'None':
....: x.pop(i[0])
....: else:
....: x.update({i[0]:'updated'})
Mais ça ne fonctionne pas.
Ce n'est pas la bonne façon de faire une boucle par un dictionnaire.
Ce sont i et x? Votre dictionnaire est nommé d.
Il est
La confusion entre
Ce sont i et x? Votre dictionnaire est nommé d.
Il est
'None'
ou None
? Chaîne de caractères ou un nonetype?La confusion entre
"None"
et None
fait de cette question pour le moins utile.OriginalL'auteur user426795 | 2010-12-19
Vous devez vous connecter pour publier un commentaire.
Il n'est pas clair ce qui est
'None'
dans le dictionnaire que vous avez posté. Si c'est une chaîne, vous pouvez utiliser les éléments suivants:Si c'est
None
, il suffit de remplacer la vérification, par exemple:v is None
.lequel et pourquoi?
second! parce que
None
n'est pas le seul falsy valeur.eh bien, je suppose que nous ne saurons jamais.
OriginalL'auteur khachik
il n'est pas clair où vous êtes l'obtention de votre
'updated'
de la valeur à partir, mais en général, il devrait ressembler à ceci:en python2.7 ou plus récent.
L'OP exemple clairement utilise la chaîne de valeur
'None'
(comme actuellement). Si oui ou non cela est destiné est quelque chose que seules les OP peuvent expliquer.OP
d
est valable un dictionnaire, je n'ai pas de raison de penser que'None'
est en faitNone
Hmmmm. C'est foiré. Suppression de mon post.
OriginalL'auteur SilentGhost
Quelque chose comme cela devrait fonctionner
.keys()
ilje pense que
d.keys()
est nécessaire ici, car il renvoie une nouvelle liste, faute de quoi il serait de parcourir un dict qui est en train de changer.OriginalL'auteur ismail
OriginalL'auteur Rosh Oxymoron
Vous pourriez essayer d'écrire un filtre général de la fonction:
ou
et ensuite vous pouvez faire ceci:
Noter que ceci a été écrit pour être compatible avec Python 3. Kilométrage peut varier.
Le truc cool, c'est qu'il vous permet de passer arbitraire lambdas à filtre au lieu de coder en dur une condition particulière. De Plus, c'est pas plus lent que les autres solutions ici. En outre, si vous utilisez la première solution que j'ai fourni, vous pouvez effectuer une itération sur les résultats.
OriginalL'auteur Woody1193