Partage
  • Partager sur Facebook
  • Partager sur Twitter

output à donner sous forme de dictionnaire

    4 mars 2016 à 8:43:15

    Bonjour, la 2ème partie de mon exo me donne du fil à retordre. Pourriez-vous m'aider svp?

    Ecrire une fonction appelée row_maximums qui accepte comme paramètre une liste de nombres à deux dimensions et retourne un dictionnaire dont les valeurs sont la valeur maximum de chaque ligne et dont les clés sont les strings appropriés spécifiés ci-dessous.

    Par exemple, si la fonction reçoit la liste suivante :

    [[5, 0, 0, 0, 13], [0, 12, 0, 0], [20, 0, 11, 0], [6, 0, 0, 8]]

    alors votre fonction doit retourner le dictionnaire comme suit :

    {'row 0 max': 13, 'row 1 max': 12, 'row 3 max': 8, 'row 2 max': 20}
    def row_maximums(some_multi_dimensional_list):  
        res=[]  
        for row in some_multi_dimensional_list:
            greatest = max(row)    
            res.append(greatest)
        return res
    def create_dictionary(D):
        D = {'row','value1','max','value2'}
        my_list = row_maximums(some_multi_dimensional_list)
        for value1 in range(len(my_list)):
            value2 == my_list[value1]
    
    some_multi_dimensional_list = [[5, 0, 0, 0, 13],
         [0, 12, 0, 0],
         [20, 0, 11, 0],
         [6, 0, 0, 8]]
    print(row_maximums(some_multi_dimensional_list))
    
    Output [13, 12, 20, 8]

    Notez que toutes les clés sont séparées par un espace et que les caractères sont en minuscules. Que la liste à deux dimensions peut avoir différents nombres de colonnes pour chaque ligne. Que les indices des lignes pour les clés doivent commencer à 0 et aller jusqu'à n (donc votre programme doit fonctionner pour n'importe quel nombre de lignes et de colonnes). Que vous ne pouvez pas utiliser la fonction built-in max.

    La 1ère partie de mon programme retourne bien la bonne liste avec les nombres corrects. Pour la 2ème partie, j'ai l'impression qu'il faut construire un dictionnaire avec comme clés :

    - d'une part le mot "row" (ou "ligne") qui accepte comme valeurs les nombres allant de 0 à n, 

    - d'autre part le mot "max" qui accepte comme valeurs les nombres de la liste trouvée dans la 1ère partie. Mais je m'y prends évidemment très maladroitement et un peu d'aide serait grandement appréciée, merci.

    • Partager sur Facebook
    • Partager sur Twitter
      4 mars 2016 à 10:21:34

      Ça se résout facilement avec :

      • Un appel à max (que tu dois recoder puisque l'énoncé te l'impose) ;
      • Un dictionnaire en intension ;
      • La fonction enumerate ;
      • Un appel à str.format.

      Ce qui représente une à deux lignes de code environ.

      Actuellement, tu as mal compris l'instruction for (on préférera for elem in iterable à for i in range(len(iterable)). Tu n'as pas compris les dictionnaires non plus (ligne 8, tu définis un set).

      Et enfin tu n'a pas bien compris le problème que tu dois résoudre : il ne te faut pas une clef 'row' et une clef 'max' (ce qui demanderait en plus d'avoir plusieurs clefs du même nom, et c'est impossible), mais une clef pour représenter la maximum de chaque liste, donc 'row 0 max', 'row 1 max', etc. jusqu'à 'row n max'.

      Il me semble donc primordial de revoir ces différentes notions (for, dictionnaires) avant de chercher à aller plus loin.

      • Partager sur Facebook
      • Partager sur Twitter

      output à donner sous forme de dictionnaire

      × 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