IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Opération sur liste


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut Opération sur liste
    Bonjour à tous,

    Je vous sollicite car je souhaite faire un calcul sur la liste dont voisi quelques éléments ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    43-33-14p22N1-02-35p53W;46457
    43-44-33p64N1-18-17p79W;52044
    43-48-10P28N1-13-46P73W;11884
    43-49-59p55N0-46-55p19W;25326
    43-44-53p27N0-43-04p64W;14978
    43-47-13p82N0-33-46p62W;41450
    43-33-14p22N1-02-35p53W;25919
    43-46-12p95N0-52-57p60W;24492
    43-38-23p08N0-43-19p00W;47131
    43-44-53p27N0-43-04p64W;47310
    43-48-10P28N1-13-46P73W;33754
    43-46-12p95N0-52-57p60W;38879
    43-44-53p27N0-43-04p64W;15120
    43-44-53p27N0-43-04p64W;18338
    43-49-59p55N0-46-55p19W;53647
    43-58-00p37N0-03-06p37W;20238
    43-44-53p27N0-43-04p64W;22589
    43-44-53p27N0-43-04p64W;18331
    43-44-53p27N0-43-04p64W;46529
    43-46-09p90N0-40-59p02W;25862
    43-43-14p52N1-17-08p22W;25630
    43-46-13p95N0-43-41p34W;51898
    43-48-10P28N1-13-46P73W;41243
    43-43-14p52N1-17-08p22W;40317
    43-46-09p90N0-40-59p02W;28730
    43-46-12p95N0-52-57p60W;24129
    43-47-13p82N0-33-46p62W;32900
    43-46-12p95N0-52-57p60W;35800
    Je souhaite récupérer le Min et le Max de la colonne 2 regroupé par valeur de la colonne 1.

    Ce qui pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    43-47-13p82N0-33-46p62W;valMin;valMin
    43-46-12p95N0-52-57p60W;valMin;valMin
    ...

    Merci de votre aide

  2. #2
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    418
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 418
    Points : 828
    Points
    828
    Par défaut
    Voici une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    datas = """43-33-14p22N1-02-35p53W;46457
    43-44-33p64N1-18-17p79W;52044
    43-48-10P28N1-13-46P73W;11884
    43-49-59p55N0-46-55p19W;25326
    43-44-53p27N0-43-04p64W;14978
    43-47-13p82N0-33-46p62W;41450
    43-33-14p22N1-02-35p53W;25919
    43-46-12p95N0-52-57p60W;24492
    43-38-23p08N0-43-19p00W;47131
    43-44-53p27N0-43-04p64W;47310
    43-48-10P28N1-13-46P73W;33754
    43-46-12p95N0-52-57p60W;38879
    43-44-53p27N0-43-04p64W;15120
    43-44-53p27N0-43-04p64W;18338
    43-49-59p55N0-46-55p19W;53647
    43-58-00p37N0-03-06p37W;20238
    43-44-53p27N0-43-04p64W;22589
    43-44-53p27N0-43-04p64W;18331
    43-44-53p27N0-43-04p64W;46529
    43-46-09p90N0-40-59p02W;25862
    43-43-14p52N1-17-08p22W;25630
    43-46-13p95N0-43-41p34W;51898
    43-48-10P28N1-13-46P73W;41243
    43-43-14p52N1-17-08p22W;40317
    43-46-09p90N0-40-59p02W;28730
    43-46-12p95N0-52-57p60W;24129
    43-47-13p82N0-33-46p62W;32900
    43-46-12p95N0-52-57p60W;35800""".split("\n")
    d = {} # on va utiliser un dictionnaire pour stocker les listes de valeurs pour chaque clé
    for l in datas:
        k, v = l.split(";")
        d.setdefault(k,[]).append(v) # on ajoute la valeur v pour la clé k
     
    for k, l in d.items(): # on récupère chaque clé et la liste de valeurs associée
        print k, min(l), max(l)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Merci pour cette réponse fatbob.

    J'ai le message d'erreur suivant :
    k, v = l.split(";")
    ValueError: too many values to unpack
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    d = {} # on va utiliser un dictionnaire pour stocker les listes de valeurs pour chaque clé
    for l in listDaylyNrj:
        k, v = l.split(";")
        d.setdefault(k,[]).append(v) # on ajoute la valeur v pour la clé k
     
    for k, l in d.items(): # on récupère chaque clé et la liste de valeurs associée
        print k, min(l), max(l)
    listDaylyNrj est une list de 1100 éléments.

    Merci

  4. #4
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    418
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 418
    Points : 828
    Points
    828
    Par défaut
    Ca vient du fait que la ligne de listDailyNrj doit contenir plus de 2 éléments.
    Dans ce cas, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        k, v = l.split(";")[:2]
    si les éléments qui t'intéressent sont les deux premiers.
    Sinon, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        lst = l.split(";")
        k, v = lst[n1], lst[n2] # ou n1 et n2 sont les indexes des éléments qui t'intéressent

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Merci c'est exactement ce que je voulais

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Opérations sur un champ Liste de choix automatique
    Par frieden dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 04/06/2015, 19h23
  2. opération sur deux listes
    Par simnitch dans le forum Lisp
    Réponses: 7
    Dernier message: 24/04/2013, 10h12
  3. Opérations sur des morceaux de liste
    Par edding4 dans le forum Général Python
    Réponses: 7
    Dernier message: 10/10/2011, 15h47
  4. opérations sur listes et dictionnaires
    Par rom44 dans le forum Général Python
    Réponses: 20
    Dernier message: 14/10/2010, 00h49
  5. [langage] random sur liste ou tableau
    Par martijan dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2003, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo