0
votes

Comptez le nombre de valeurs dans un dictionnaire?

J'ai créé un dictionnaire et je souhaite créer une fonction appelée comte_type qui prendra ce dictionnaire et renvoyera un autre dictionnaire appelé compte . Cette fonction prend dans un menu (dictionnaire) et renvoie un compte (dictionnaire) qui plante chaque type d'élément au nombre de ce type de ce type dans le menu. Le nouveau dictionnaire commence à ressembler à: XXX

Je veux que le résultat final soit le même dictionnaire, mais le 0 à remplacer par le nombre de fois de temps il existe une clé: valeur avec la valeur 'Entreres', etc. dans le dictionnaire d'origine. Un exemple de ce que je voudrais que la sortie ressemble à: xxx

jusqu'à présent, j'ai le code: xxx

Cette boucle ne me donne qu'un compte pour boisson de 46 qui est toutes les valeurs. Comment puis-je faire cela?

la fonction read_file que j'ai créée est déjà: xxx

Imprimer (Menu) Retours Un long dictionnaire: xxx

où certains sont 'entres' , 'salades' , etc. , etc.


12 commentaires

Veuillez fournir la fonction read_file .


Pouvez-vous fournir un exemple sur ce que votre rendement pourrait être?


Un exemple de ce que j'aimerais que la sortie ressemble à: Count = {"Entreres": 3, "Salades": 15, "côtés": 3, "Repas de l'enfant": 6, "Desserts": 4, "Boissons" : 5}


Imprimez la valeur et le type de valeur et assurez-vous qu'il est ce que vous vérifiez dans votre relevé IF. Ou si vous avez accès à un débogueur, mettez un point d'arrêt à l'intérieur de la boucle et inspectez la valeur de la valeur, ce n'est probablement pas ce que vous vérifiez dans le si


Veuillez imprimer menu et écrivez-le en question


Je ne comprends peut-être pas le problème correctement, mais d'incrémenter la valeur du dictionnaire lorsque vous passez dans le menu, au lieu d'ENT + = = 1, ne pouvez-vous pas compter ["Entreres"] + = 1. Je pense que nous avons également besoin de savoir quelle est la variable de menu contient.


Mais je vous suggère d'imprimer valeur dans pour la valeur dans le menu: et voyez si votre attente de sortie est correcte. Vous pouvez avoir des valeurs erronées pour vérifier.


La boucle continue de compter 46 pour les boissons et 0 pour tous les autres. Ce qui n'est pas correct


Une fois que vous avez votre problème avec la valeur de la valeur fixée, ce que vous pouvez faire est de configurer les clés du dictionnaire pour correspondre à la valeur de ce qui est en valeur, puis plutôt qu'une instruction si importante que vous pouvez compter [valeur] + = 1. Pour un) Une meilleure solution examine la dicte par défaut. Vous pouvez vraiment réduire le code alors.


Si vous imprimez la valeur à l'aide de votre code actuel, vous le verrez faire référence à «Sandwich au poulet» Chic-Fil-A, «Sandwich de Deluxe Chic-Fil-A». Non si c'est une entrée ou une autre. Vous devez aller après cet élément spécifique


La valeur sera une tuple des trois valeurs, de sorte qu'il ne sera jamais égal au type d'élément de menu. Vous devez obtenir le type d'élément de menu du tuple. Essayez l'article (prix, qté, item_type) dans menu.items (): puis item_type sera ce que vous voulez. Les éléments () renvoient la clé et la valeur. Le (prix, qty, item_type) déconstruit le tuple (le déballe). Si vous n'avez jamais besoin de l'élément_type, vous pouvez simplement utiliser .Values ​​() et décompresser le tuple ou le référencer par index


La partie qui dit s'il s'agit d'une entrée ou d'une autre est une valeur à chaque clé. Comment puis-je préciser que je veux compter cette valeur de chaque clé


3 Réponses :


1
votes

Je vous recommande d'essayer: comptez [valeur] + = 1 dans pour la valeur dans le menu boucle

mise à jour: vous devez éditer votre boucle < Pré> xxx


0 commentaires

0
votes

dans votre boucle

pour la valeur dans le menu: Au lieu de vérifier contre la valeur, vérifiez sur le suivant P>

count["Entrees"] += 1


4 commentaires

ohhh ok je vois ce que tu dis! Maintenant, comment puis-je les compter et les ajouter à mettre à jour le dictionnaire de compte?


J'ai mis à jour ma réponse pour répondre à votre question. Au lieu de créer séparé dans, une salade, etc. Vous pouvez simplement compter [Menu [valeur] [2]] + = 1


MERCI BEAUCOUP! :)


Ravi d'entendre :)



1
votes

Votre code ne fonctionne pas car vous êtes itération sur les clés de votre dictionnaire du menu , qui est le nom des éléments (par exemple, "sandwich au poulet épicé" ), mais vous vous attendez à avoir un type d'élément (par exemple, "entrez" ).

Pour résoudre ce problème, vous devez changer votre boucle. Je suggérerais: xxx

Je noterais que le nom la valeur n'est pas très clair quel type de valeur il est, surtout quand vous " Retirez un tas d'autres données du dictionnaire (et de les jeter dans la variable _ qui sera ignoré). Déballage en variables plus clairement nommées, comme prix, cal, tac à nouveau, peut rendre le code plus clair.

Ce pourrait aussi être une bonne idée de correspondre à "code>" boissons " explicitement, plutôt que de laisser des types non valides chuter là-bas. Vous auriez pu soulever une exception si elle obtient un type inconnu à la place: xxx


0 commentaires