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 :

Trie dans l'ordre alphabétique (liste encastrée)


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut Trie dans l'ordre alphabétique (liste encastrée)
    Bonjour, j'ai un problème pour effectuer un trie dans une liste encastrée.

    Je dois envoyer au programme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ['0', '1']  //Personnes 0 et 1
    Mon but est qu'a partir de la ligne au dessus , il fasse référence a la liste suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listepersonnes = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    Et qu'il me fasse un trie de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ['LAPORTE', 'LUCIE'], ['RIETTE', 'JEAN']
    En français cela équivaut à ce qu'il fasse le trie des noms mais pas des prénoms, toutefois en gardant le couple nom prénom correct.


    Actuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    listepersonnes = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    listetrie = []
    for i in range (len(listepersonnes)):
        listetrie.append(listepersonnes[i][0])
        listetrie.sort()
        listetrie.append(listepersonnes[i][1])
     
    print(listetrie)
    Je ne vois vraiment pas quoi faire ;( c'est vraiment très confus dans ma tête la...
    Le but est d'en faire une fonction que l'on puisse appeler avec pour paramètre "['0', '1']"

    Merci d'avance...

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listepersonnes = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    listetrie = []
    for i in range (len(listepersonnes)):
        listetrie.append(listepersonnes[i][0])
        listetrie.sort(key=lambda x: x[0])
        listetrie.append(listepersonnes[i][1])
     
    print(listetrie)
    ?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> l = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    >>> sorted([i[:2] for i in l])
    [['LAPORTE', 'LUCIE'], ['RIETTE', 'JEAN']]

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par supersnail Voir le message
    Bonjour,

    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listepersonnes = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    listetrie = []
    for i in range (len(listepersonnes)):
        listetrie.append(listepersonnes[i][0])
        listetrie.sort(key=lambda x: x[0])
        listetrie.append(listepersonnes[i][1])
     
    print(listetrie)
    ?

    Merci beaucoup pour ta réponse , malheureusement elle ne fais pas ce que j'ai indiqué comme souhait d'affichage.
    Ton code mélange le nom d'une personne avec le prénom d'une autre et elle ne fait pas un trie correct comme indiqué dans mon message plus haut c'est à dire le trie par ordre alphabétique du nom et le prénom qui suit.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,

    je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> l = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    >>> sorted([i[:2] for i in l])
    [['LAPORTE', 'LUCIE'], ['RIETTE', 'JEAN']]
    Merci, ton code fonctionne, le retour est bon par contre il traite toute la liste, comment puis-je lui faire traiter pour la personne X , ou alors pour les personnes de X à Y
    En fait l'utilisateur dois saisir ceci : ['0', '1'] la liste traite alors la personne 0 et 1 .
    Si il saisit ['0', '1', '2'] alors le trie se fait de la personne 0 à la 2.


    Il faudrait que je fasse une fonction avec pour paramètre la personne à traiter.
    Un genre de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    def trieliste(personneachercher):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     def trieliste(['0', '1']):

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> maliste = [
    ...    ['RIETTE', 'JEAN', 'H', '28'],      ['DUPONT', 'ROGER', 'H', '62'],
    ...    ['PETIT', 'LUCIENNE', 'F', '55'],   ['LAPORTE', 'LUCIE', 'F', '38']
    ... ]
    >>> def trieliste(selection):
    ...    return sorted([i[:2] for i in [maliste[j] for j in selection]])
    >>> trieliste([0,3])
    [['LAPORTE', 'LUCIE'], ['RIETTE', 'JEAN']]

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> maliste = [
    ...    ['RIETTE', 'JEAN', 'H', '28'],      ['DUPONT', 'ROGER', 'H', '62'],
    ...    ['PETIT', 'LUCIENNE', 'F', '55'],   ['LAPORTE', 'LUCIE', 'F', '38']
    ... ]
    >>> def trieliste(selection):
    ...    return sorted([i[:2] for i in [maliste[j] for j in selection]])
    >>> trieliste([0,3])
    [['LAPORTE', 'LUCIE'], ['RIETTE', 'JEAN']]
    Merci beaucoup !
    C'est juste parfait...
    Il faut que je m’intéresse fortement à ce genre de syntaxe après le sorted.

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    J'ai voulu tester avec l'ajout d'une autre personne depuis ma fonction ( fonctionnel )
    Le but est ici de trier les gens suivant leur age.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ajoutpersonne("TOTO", "TATA", "H", "18")
    ajoutpersonne("TITI", "TRUTRU", "H", "19")
    ajoutpersonne("Jacouille", "Lafripouille", "H", "89")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def age(selection2):
      return sorted([i[:4] for i in [listepersonnes[j] for j in selection2]])
    print(age([0, 1, 2]))
    Mais le résultat est plutot étrange xD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [['TOTO', 'TATA', 'H', '18'], ['Jacouille', 'Lafripouille', 'H', '89'], ['TITI', 'TRUTRU', 'H', '19']]
    J'ai ensuite voulu la mettre à l'envers avec reverse=True mais ce n'a pas non plus porté ces fruits

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par supersnail Voir le message
    Bonjour,

    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listepersonnes = [['RIETTE', 'JEAN', 'H', '28'], ['LAPORTE', 'LUCIE', 'H', '38']]
    listetrie = []
    for i in range (len(listepersonnes)):
        listetrie.append(listepersonnes[i][0])
        listetrie.sort(key=lambda x: x[0])
        listetrie.append(listepersonnes[i][1])
     
    print(listetrie)
    ?

    En relisant ton code, je me suis dis qu'il pourrait peut-etre faire fonctionner ce que je souhaitais concernant un trie pour l'age et beh en faisant un mélange de ton code et celui du modo, le resultat est correct ! Par contre je ne sais pas si c'est propre..

    Sa vous semble comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return sorted([i[:4] for i in [listepersonnes[j] for j in selection2]], key=lambda x: x[3], reverse = True)
    Résultat parfait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [['Jacouille', 'Lafripouille', 'H', '89'], ['PERSONNE1', 'PRENOM', 'H', '19'], ['PERSONNE2', 'PRENOM', 'H', '18']]

Discussions similaires

  1. [VBA-EXcel] classement des noeuds d'une treeview dans l'ordre alphabétique
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/01/2017, 19h02
  2. Réponses: 11
    Dernier message: 28/06/2010, 11h16
  3. Réponses: 4
    Dernier message: 30/06/2008, 17h17
  4. fichier dans l'ordre alphabétique avec dirent
    Par drasalmed dans le forum POSIX
    Réponses: 6
    Dernier message: 03/12/2007, 23h19
  5. Alimenter un recordset dans l'ordre alphabétique
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/11/2007, 11h04

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