Il ressemble à votre malentendu est avec filter
, pour moi. Vous passez une fonction de prédicat et un objet itérable à filter
. Il crée un nouvel objet contenant les éléments du premier itérable pour lequel le prédicat renvoie une valeur vraie (pas nécessairement True
lui-même, juste quelque chose qui teste comme vrai). L'itérable dans les deux cas est la chaîne '2341'
, ce qui signifie que les lettres individuelles sont testées. Bien sûr, la chaîne '2341'
n'est pas égale à '2'
, '3'
, '4'
ou '1'
.
Essayez avec un tuple et il est plus facile de voir ce qui se passe:
>>> tup = tuple(dict['Alice'])
>>> tup
('7', '8', '9', '8')
>>> filter(lambda x: x, tup)
('7', '8', '9', '8')
>>> tup
('7', '8', '9', '8')
>>> filter(lambda x: x, tup)
('7', '8', '9', '8')
>>> filter(lambda x: x=="2341", tup)
()
vous devez utiliser la liste compréhensions au lieu de 'filter' et' map' –
Ne pas utiliser 'dict' comme nom de variable. C'est le nom du type de dictionnaire Python. –