Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain BARTHE
Essayes ça :
def compare (g,d): """En cas d'egalite du premier element de deux couples g et d, comparer le second element sinon retourner la comparaison des premiers elements """ if g[0] == d[0]: return cmp (g[1], d[1]) else: return cmp (g[0], d[0])
liste = ...
liste.sort (compare)
print liste
El fait, je me demande même si par défaut, l'appel liste.sort() tout seul n'est pas suffisant dans ton cas
Bonjour,
je souhaiterais, dans une liste de listes, trier selon un premier élément puis, en cas d'ex aequo, selon un second. Ainsi, si :
liste=[['b',2],['a',3],['b',1]]
je souhaiterais obtenir après tri :
[['a', 3], ['b', 1], ['b', 2]]
Je sais trier selon un élément ou un autre :
liste=[['b',2],['a',3],['b',1]] liste.sort(lambda x, y: cmp(x[0], y[0])) print liste
[['a', 3], ['b', 2], ['b', 1]]
liste.sort(lambda x, y: cmp(x[1], y[1])) print liste
[['b', 1], ['b', 2], ['a', 3]]
mais pas les deux « à la fois ».
Merci d'avance pour toute piste...
Essayes ça :
def compare (g,d):
"""En cas d'egalite du premier element de deux couples g et d,
comparer le second element
sinon retourner la comparaison des premiers elements
"""
if g[0] == d[0]:
return cmp (g[1], d[1])
else:
return cmp (g[0], d[0])
liste = ...
liste.sort (compare)
print liste
El fait, je me demande même si par défaut, l'appel liste.sort()
tout seul n'est pas suffisant dans ton cas
Bonjour,
je souhaiterais, dans une liste de listes, trier selon un premier
élément puis, en cas d'ex aequo, selon un second. Ainsi, si :
liste=[['b',2],['a',3],['b',1]]
je souhaiterais obtenir après tri :
[['a', 3], ['b', 1], ['b', 2]]
Je sais trier selon un élément ou un autre :
liste=[['b',2],['a',3],['b',1]]
liste.sort(lambda x, y: cmp(x[0], y[0]))
print liste
[['a', 3], ['b', 2], ['b', 1]]
liste.sort(lambda x, y: cmp(x[1], y[1]))
print liste
def compare (g,d): """En cas d'egalite du premier element de deux couples g et d, comparer le second element sinon retourner la comparaison des premiers elements """ if g[0] == d[0]: return cmp (g[1], d[1]) else: return cmp (g[0], d[0])
liste = ...
liste.sort (compare)
print liste
El fait, je me demande même si par défaut, l'appel liste.sort() tout seul n'est pas suffisant dans ton cas
Bonjour,
je souhaiterais, dans une liste de listes, trier selon un premier élément puis, en cas d'ex aequo, selon un second. Ainsi, si :
liste=[['b',2],['a',3],['b',1]]
je souhaiterais obtenir après tri :
[['a', 3], ['b', 1], ['b', 2]]
Je sais trier selon un élément ou un autre :
liste=[['b',2],['a',3],['b',1]] liste.sort(lambda x, y: cmp(x[0], y[0])) print liste
[['a', 3], ['b', 2], ['b', 1]]
liste.sort(lambda x, y: cmp(x[1], y[1])) print liste
[['b', 1], ['b', 2], ['a', 3]]
mais pas les deux « à la fois ».
Merci d'avance pour toute piste...
Denis Bitouzé
Le samedi 02/05/09 à 23h00, Alain BARTHE a écrit :
El fait, je me demande même si par défaut, l'appel liste.sort() tout seul n'est pas suffisant dans ton cas
Je ne sais plus pourquoi j'avais eu besoin de cmp (ça date d'il y a au moins un an) mais il est vrai que, à condition construire les sous-listes dans l'ordre de priorité des éléments à classer, ça marche.
Comme je sens bien que la phrase précédente est tout sauf claire, je précise : ce que j'entends par là est que si on dispose d'une liste de personnes caractérisées *entre autres* par leurs dates de naissance, noms et prénoms et qu'on souhaite classer selon les noms puis prénoms puis date de naissances les dites personnes, il faudra construire les listes de caractéristiques des personnes en faisant figurer en 1er les noms, en 2e les prénoms et en 3e les dates de naissances...
Merci ! -- Denis
Le samedi 02/05/09 à 23h00,
Alain BARTHE <alain.barthe.65@free.fr> a écrit :
El fait, je me demande même si par défaut, l'appel liste.sort()
tout seul n'est pas suffisant dans ton cas
Je ne sais plus pourquoi j'avais eu besoin de cmp (ça date d'il y a au
moins un an) mais il est vrai que, à condition construire les
sous-listes dans l'ordre de priorité des éléments à classer, ça
marche.
Comme je sens bien que la phrase précédente est tout sauf claire, je
précise : ce que j'entends par là est que si on dispose d'une liste de
personnes caractérisées *entre autres* par leurs dates de naissance,
noms et prénoms et qu'on souhaite classer selon les noms puis prénoms
puis date de naissances les dites personnes, il faudra construire les
listes de caractéristiques des personnes en faisant figurer en 1er les
noms, en 2e les prénoms et en 3e les dates de naissances...
Le samedi 02/05/09 à 23h00, Alain BARTHE a écrit :
El fait, je me demande même si par défaut, l'appel liste.sort() tout seul n'est pas suffisant dans ton cas
Je ne sais plus pourquoi j'avais eu besoin de cmp (ça date d'il y a au moins un an) mais il est vrai que, à condition construire les sous-listes dans l'ordre de priorité des éléments à classer, ça marche.
Comme je sens bien que la phrase précédente est tout sauf claire, je précise : ce que j'entends par là est que si on dispose d'une liste de personnes caractérisées *entre autres* par leurs dates de naissance, noms et prénoms et qu'on souhaite classer selon les noms puis prénoms puis date de naissances les dites personnes, il faudra construire les listes de caractéristiques des personnes en faisant figurer en 1er les noms, en 2e les prénoms et en 3e les dates de naissances...
Merci ! -- Denis
Boris Borcic
Denis Bitouzé wrote:
Merci d'avance pour toute piste...
Une piste est que le tri python est stable, cad que les ex aequo vont con server l'ordre qu'ils ont dans l'input. Donc une voie est de trier d'abord selon le critère secondaire, puis selon le critère primaire.
Denis Bitouzé wrote:
Merci d'avance pour toute piste...
Une piste est que le tri python est stable, cad que les ex aequo vont con server
l'ordre qu'ils ont dans l'input. Donc une voie est de trier d'abord selon le
critère secondaire, puis selon le critère primaire.
Une piste est que le tri python est stable, cad que les ex aequo vont con server l'ordre qu'ils ont dans l'input. Donc une voie est de trier d'abord selon le critère secondaire, puis selon le critère primaire.