Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dictionnaire python

    19 janvier 2019 à 21:42:03

    Bonjour je suis débutant en python j'aimerais définir une fonction  qui renvoie l’ingrédient le plus utilisé dans le livre de recettes .
    on supposera que le livre de recettes contient au moins une recette.
    Puis une fonction qui permet de supprimer par exemple tout les oeuf de mes recette sans suprimer la clé
    voici mon dictionaire:
    livre={'Gâteau au chocolat':{'chocolat', 'oeuf', 'farine',' sucre', 'beurre'} }
    livre.update({'Gâteau au yaourt':{'yaourt', 'oeuf', 'farine', 'sucre'} })
    livre.update({'Crêpes':{'oeuf', 'farine', 'lait', 'bière'}})
    livre.update({'Quatre-quarts':{'oeuf', 'farine', 'beurre', 'sucre'} })
    livre.update({'Kouign-amann':{'farine', 'beurre', 'sucre'}})
    merci de votre aide.

    -
    Edité par pickandroll 19 janvier 2019 à 23:43:05

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2019 à 10:09:17

      je sais pas trop pourquoi tu utilise update plutôt que dict[clé] = valeur mais bon ceci mis à part tu peux faire créer un autre dict qui contient {ingredient:nb, ingredient:nb ...} que tu trie ensuite et tu récupère le résultat:

      plus_present = sorted(nb_dict.items(), key=lambda x:x[1])
      plus_present = plus_present[-1] # ici faut convertir en liste avant je crois pour python 3

      après pour supprimer tout les oeufs tu parcoure le dict et redéclare des nouveau set ( d'ailleur je sais pas non plus pourquoi tu as mis des set plutôt que des listes...) qui ne contiennent pas l'élément que tu veux enlever

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        20 janvier 2019 à 14:40:15

        En fait c'est bien d'utiliser des sets, au lieu des listes, car il est inutile d'avoir plusieurs fois le même ingrédient par recette. C'est optimal et facile à modifier.

        Par exemple, pour compter le nombre de recette contenant un ingrédiant :

        count = sum("sucre" in elts for elts in book.values())

        Ou bien :

        count = 0
        for elements in book.values():
            count += "sucre" in elements
        

        Et pour supprimer un ingrédient de toute les recettes, in-place :

        for elements in book.values():
            elements.discard("sucre")
        

        Pour les fonctions et méthodes utilisés, voir la doc (RTFM comme on dit).

        -
        Edité par Anonyme 20 janvier 2019 à 14:41:33

        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2019 à 15:43:40

          Mouais ça doit certainement être que je suis pas du tout habitué à utiliser des sets ;)
          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2019 à 19:16:48

            Merci a tous j'ai pu  faire ma fonction
            • Partager sur Facebook
            • Partager sur Twitter

            Dictionnaire python

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown