Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste complexe

Sujet résolu
    1 août 2019 à 10:21:02

    Bonjour,

    Je souhaite réaliser une liste avec plusieurs informations:

    variables évolutive avec une boucle for : source, destination, port, protocole

    la liste que je souhaite devrais ressembler à cela :

    [0,source_1,destination_1,port_1,protocole_1, 1,source_2,destination_2,port_2,protocole_2, 3,source_3,destination_3,port_3,protocole_3]

    En gros je souhaite un tableau à 2 dimensions débutant toujours par une sorte d'ID..

    Merci pour votre aide.

    -
    Edité par JeanLouis74 1 août 2019 à 10:21:38

    • Partager sur Facebook
    • Partager sur Twitter
      1 août 2019 à 10:29:33

      Salut,

      Lorsqu'on regroupe des données hétérogènes (différentes), on utilise généralement le tuple. Donc avec un tuple, tu vas regrouper les éléments suivants : ID, source, destination, port, protocole. Ensuite tu te fais une liste contenant des tuples.

      connections = [
          (0, '192.168.1.4', '46.52.28.64', '432', 'TCP'),
          (1, '192.168.1.5', '36.67.12.114', '5524', 'UDP'),
          # Etc
      ]
      
      for id_, source, dest, port, prot in connections:
          # Do something...



      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2019 à 10:37:43

        Merci,

        Je récupère les informations d'un fichier de log que je passe dans une fonction qui retourne via un "for" la source, destination, protocol et port 1 à 1 et justement j'ai réalisé une liste de cette manière :

            for (src, dest, protocol, dest_p), count in counter.most_common():
                list_fichier_log.append(cpt)
                list_fichier_log.append(str(src))
                list_fichier_log.append(str(dest))
                list_fichier_log.append(str(protocol))
                list_fichier_log.append(str(dest_p))
        

        Mais je ne pense pas que ma méthode est la bonne, le résultat attendu est le bon mais de cette manière je n'ai pas une liste à 2 dimension mais plutôt une liste qui ce rallonge petit à petit donc plus difficile à traiter par la suite..
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2019 à 10:46:35

          En effet, tu dois d'abord te construire ton tuple dans la boucle for. C'est ce tuple que tu append à ta liste ensuite.

          for (src, dest, protocol, dest_p), count in counter.most_common():
              data = (cpt, str(src), str(dest), str(protocol), str(dest_p))
              list_fichier_log.append(data)
          
          # Ou bien
          for connection, count in counter.most_common():
              data = (cpt, *(str(element) for element in connection))
              list_fichier_log.append(data)


          Par contre je ne sais pas d'où vient cette variable cpt, mais elle restera la même durant toute la boucle for.

          -
          Edité par Dan737 1 août 2019 à 10:49:07

          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2019 à 10:49:56

            Comme l'a dit Dan737, si tu veux du 2 dimensions il faut faire quelque chose comme :

            for (src, dest, protocol, dest_p), count in counter.most_common():
                list_fichier_log.append((cpt, str(src), str(dest), str(protocol), str(dest_p)))

            )
            • Partager sur Facebook
            • Partager sur Twitter
              1 août 2019 à 11:58:23

              Merci beaucoup, c'est exactement ça !
              • Partager sur Facebook
              • Partager sur Twitter

              Liste complexe

              × 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