Python dict len

La méthode len() ne fonctionne que sur les objets itérables tels que les chaaînes, les listes et les dictionnaires. En effet, les objets itérables contiennent des séquences de valeurs. Si vous essayez d’utiliser la méthode len() sur une valeur None, vous rencontrerez l’erreur "TypeError : object de type ‚ÄòNoneType‚Äô n’a pas de len()‚".

Dans ce guide, nous expliquons ce que signifie cette erreur et comment elle fonctionne. Nous passons en revue deux exemples de cette erreur en action afin que vous puissiez trouver comment la résoudre dans votre code.

TypeError : objet de type ‘NoneType’ has no len()

NoneType fait référence au type de données None. Vous ne pouvez pas utiliser de méthodes qui fonctionneraient sur des objets itérables, tels que len(), sur une valeur None. En effet, None ne contient pas de collection de valeurs. La longueur de None ne peut pas être calculée car None n’a pas de valeurs enfants.

Cette erreur est courante dans deux cas :

  • O√π vous oubliez que construit Les fonctions -in modifient une liste sur place
  • O√π vous oubliez une instruction return dans une fonction

Regardons chacune de ces causes en profondeur.

Cause n¬∞1 : les fonctions intégrées modifient les listes sur place

Nous allons créer un programme qui trie une liste de dictionnaires contenant des informations sur les élèves d’une école. Nous allons trier cette liste par ordre croissant de la note d’un étudiant lors de son dernier test.

Pour commencer, définissez une liste de dictionnaires contenant des informations sur les étudiants et leur score le plus récent :

Chaque dictionnaire contient deux clés et valeurs. L’un correspond au nom d’un étudiant et l’autre correspond au score obtenu par un étudiant lors de son dernier test. Ensuite, utilisez la méthode sort() pour trier notre liste d’étudiants :

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Nous avons déclaré une fonction appelée "score_sort" qui renvoie la valeur de "score‚" dans chaque dictionnaire. Nous l’utilisons ensuite pour ordonner les éléments de notre liste de dictionnaires à l’aide de la méthode sort().

Ensuite, nous imprimons la longueur de notre liste :

Nous imprimons la nouvelle liste de dictionnaires sur la console en utilisant une boucle for :

Ce code imprime un message nous informant du nombre de points qu’un étudiant a obtenu lors de son dernier test pour chaque élève de la liste "sorted_students". Exécutons notre code :

Notre code renvoie une erreur.

Pour résoudre ce problème, nous devons supprimer le code o√π nous affectons le résultat de la méthode sort() à "sorted_students‚". C’est parce que la méthode sort() modifie une liste en place. Il ne crée pas de nouvelle liste.

Supprimer la déclaration des "sorted_students‚" lister et utiliser "étudiants" dans le reste de notre programme :

Exécutez notre code et voyez ce qui se passe :

Notre code s’exécute avec succès. Tout d’abord, notre code nous indique le nombre d’étudiants dans notre liste. Notre code imprime ensuite des informations sur chaque élève et le nombre de points qu’ils ont obtenus lors de leur dernier test. Ces informations sont imprimées dans l’ordre croissant de la note d’un étudiant.

Cause n°2 : Oublier une instruction de retour

Nous allons rendre notre code plus modulaire. Pour ce faire, nous déplaçons notre méthode de tri dans sa propre fonction. Nous ; définirons également une fonction qui imprime des informations sur la note obtenue par chaque étudiant à son test.

Commencez par définir notre liste d’étudiants et notre fonction d’aide au tri. Nous emprunterons ce code à plus tôt dans le didacticiel.

Ensuite, écrivez une fonction qui trie notre liste :

Enfin, nous définissons une fonction qui affiche des informations sur chaque étudiant‚Äô performances :

Avant d’exécuter notre code, nous devons appeler nos fonctions :

Notre programme va d’abord trier notre liste en utilisant la fonction sort_list(). Ensuite, notre programme imprimera des informations sur chaque étudiant sur la console. Ceci est géré dans la fonction show_students().

Exécutons notre code :

Notre code renvoie une erreur. Cette erreur s’est produite car nous avons oublié d’inclure un "retour" dans notre "sort_list‚" function.

Lorsque nous appelons notre fonction sort_list(), nous affectons sa réponse à la variable "new_students‚". Cette variable est transmise à notre fonction show_students() qui affiche des informations sur chaque étudiant. Pour résoudre cette erreur, nous devons ajouter une instruction return à la fonction sort_list() :

"Career Karma est entré dans ma vie au moment o√π j’en avais le plus besoin et m’a rapidement aidé match avec un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Exécutez notre code :

Notre code renvoie la réponse que nous attendions.

Conclusion

L’erreur "TypeError : objet de type ‚ÄòNoneType‚Äô n’a pas d’erreur len()" lorsque vous essayez de utilisez la méthode len() sur un objet dont la valeur est None.

Pour résoudre cette erreur, assurez-vous que vous n’affectez les réponses d’aucun lister les méthodes, comme sort(), à une variable. Si cela ne résout pas l’erreur, assurez-vous que votre programme dispose de toutes les instructions "return‚" dont il a besoin pour fonctionner correctement.

Maintenant, vous êtes prêt à résoudre ce problème comme un professionnel Python !