Python compte les éléments de la valeur dict qui est une liste
Python 3.3, un dictionnaire avec des paires clé-valeur dans cette forme.
d = {'T1': ['eggs', 'bacon', 'sausage']}
Les valeurs sont des listes de longueur variable, et j'ai besoin de faire une itération sur les éléments de la liste. Cela fonctionne:
count = 0
for l in d.values():
for i in l: count += 1
Mais c'est moche. Il doit y avoir une plus Pythonic façon, mais je n'arrive pas à le trouver.
len(d.values())
produit 1. C'est le 1er de la liste (DUH). Les tentatives avec Compteur de ici donner des "unhashable type' erreurs.
source d'informationauteur RolfBly | 2013-05-31
Vous devez vous connecter pour publier un commentaire.
Utilisation
sum()
et les longueurs de chacun des dictionnaire valeurs:Si vous utilisez Python 3, alors il suffit d'utiliser
d.values()
.Démonstration rapide avec votre échantillon d'entrée et un de la mine:
Un
Counter
ne vous aidera pas beaucoup ici, vous n'êtes pas de la création d'un compte par l'entrée, vous êtes le calcul de la longueur totale de toutes vos valeurs.Je cherchais une réponse à cela quand j'ai trouvé ce sujet jusqu'à ce que je réalise que j'avais déjà quelque chose dans mon code afin de l'utiliser pour. C'est ce que je suis venu avec:
Si vous souhaitez enregistrer le nombre de pièces pour chaque élément de dictionnaire vous pouvez créer un nouveau dictionnaire pour enregistrer le nombre de chaque clé.
Je ne pouvais pas trouver exactement à partir de quelle version de cette méthode est disponible, mais je pense .éléments de méthode est uniquement disponible en Python 3.
Faire mes devoirs sur Treehouse je suis venu avec cette. Il peut être rendu plus simple par une étape au moins (que je connais), mais il peut être plus facile pour les débutants (comme moi) onderstand cette version.