# Données à trier
class Personne:
def __init__(self,nom,prenom):
(self.nom,self.prenom)=(nom,prenom)
personnes = []
personnes.append(Personne('Viseur','Robert'))
personnes.append(Personne('Viseur','Nathalie'))
personnes.append(Personne('Ruesiv','Nathalie'))
personnes.append(Personne('Ruesiv','Jean-Jacques'))
# Regroupement par nom
noms = {}
for personne in personnes:
if personne.nom in noms:
noms[personne.nom].append(personne.prenom)
else:
noms[personne.nom] = [personne.prenom]
# Tri & affichage
for nom in sorted(noms):
for prenom in sorted(noms[nom]):
print "%s %s\n"%(nom,prenom)
# .sort()
Posté par Brahici . Évalué à 1.
a = ['b' , 'c' , 'a']
a.sort()
=> a = ['a' , 'b' , 'c']
a.reverse()
=> a = ['c' , 'b' , 'a']
[^] # Re: .sort()
Posté par Robert VISEUR (site web personnel) . Évalué à 1.
Mais si tu veux faire du tri multicolonne, ça ne convient plus.
[^] # Re: .sort()
Posté par Brahici . Évalué à 2.
>>> a = [ range (1,5) , range(15,20) , range(10,15) , range(5,10) ]
>>> for l in a: print l
[1, 2, 3, 4]
[15, 16, 17, 18, 19]
[10, 11, 12, 13, 14]
[5, 6, 7, 8, 9]
>>> a.sort()
>>> for l in a: print l
[1, 2, 3, 4]
[5, 6, 7, 8, 9]
[10, 11, 12, 13, 14]
[15, 16, 17, 18, 19]
>>> a.reverse()
>>> for l in a: print l
[15, 16, 17, 18, 19]
[10, 11, 12, 13, 14]
[5, 6, 7, 8, 9]
[1, 2, 3, 4]
>>> a[0].reverse()
>>> for l in a: print l
[19, 18, 17, 16, 15]
[10, 11, 12, 13, 14]
[5, 6, 7, 8, 9]
[1, 2, 3, 4]
>>> a.sort()
>>> for l in a: print l
[1, 2, 3, 4]
[5, 6, 7, 8, 9]
[10, 11, 12, 13, 14]
[19, 18, 17, 16, 15]
>>>
[^] # Re: .sort()
Posté par TazForEver . Évalué à 3.
sorted(a) => copie triée de a
reversed(a) => copie renversée de a
RTFM pour les subtilités (critères de tris, DSU, etc)
# Précise
Posté par Robert VISEUR (site web personnel) . Évalué à 1.
J'ai un vecteur de noms.
J'ai un vecteur de prénoms.
Je veux avoir une liste de noms et prénoms triés d'abord sur le nom, puis sur le prénom.
En PHP, c'est facile. En Python, je ne connais pas de fonction qui le fasse. Cela existe-t-il ?
Donc, si j'ai :
DUPOND ; Pierre
HENRI ; Charles
DUPONT ; Jacques
Je veux obtenir :
DUPOND ; Pierre
DUPONT ; Jacques
HENRI ; Charles
[^] # Re: Précise
Posté par bobert . Évalué à 2.
[^] # Raah, le boulet
Posté par bobert . Évalué à 2.
Ce qui donne:
# Données à trier
class Personne:
def __init__(self,nom,prenom):
(self.nom,self.prenom)=(nom,prenom)
def __cmp__(self,o):
return cmp(self.nom+self.prenom,o.nom+o.prenom)
def __str__(self):
return "%s ; %s"%(self.nom,self.prenom)
personnes = []
personnes.append(Personne('Viseur','Robert'))
personnes.append(Personne('Viseur','Nathalie'))
personnes.append(Personne('Ruesiv','Nathalie'))
personnes.append(Personne('Ruesiv','Jean-Jacques'))
# Affichage
for personne in sorted(personnes):
print personne
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.