Maison > Article > développement back-end > tri python sort() et sorted()
Exemples d'application :
1. Générer une séquence selon l'alphabet
2 Trier plusieurs champs d'enregistrements, etc.
Fonctions de tri couramment utilisées :
sort()sorted()Comparaison : 1. sorted() a une gamme d'applications plus largesorted(iterable[. , cmp[ , key[, reverse]]])s.sorted([cmp[, key[, reverse]]])Exemple :> >> ; personnes = [{'name':'Jon','age': 32}, {'name':'Alan','age': 50}, {'name': 'Bob', 'age ':23 }]>>> trié(personnes, key=lambda x: (x['name'], -x['age']))
[{'age': 50 , 'nom' : 'Alan'}, {'age' : 23, 'nom' : 'Bob'}, {'age' : 32, 'nom' : 'Jon'}]
>>> a.sort( )
Traceback (dernier appel le plus récent) :
Fichier "
AttributeError : l'objet 'tuple' n'a pas d'attribut 'sort'
> ;>> sorted(a)
[1, 2, 2, 3, 4]
>>> trié(a)
[1, 3, 7, '1', 'a', 'n']
> >> une
['1', 1, 'a', 3, 7, 'n']
>>> a
[1, 3, 7, '1', 'a', 'n']
3. Pour les fonctions sort() et sorted(), l'entrée Le paramètre key est supérieur au paramètre cmp Haute efficacité. La fonction transmise par cmp est appelée plusieurs fois pendant tout le processus de tri, ce qui coûte cher ; la clé n'est traitée qu'une seule fois pour chaque élément.
>>> depuis timeit import Timer
>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs =range(100);xs=zip(xs,xs);").timeit(10000)0.35391712188720703
>>> : cmp(a[1],b[1]))" ,setup="xs=range(100);xs=zip(xs,xs);").timeit(10000)
0.4931659698486328
4.sorted() peut trier une variété de structures de données
Dictionnaire :
Trier les numéros de téléphone du répertoire par taille numérique
> ;>> Bob':'9345','Carol':'5834'}
>>> de l'opérateur import itemgetter> >> (1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]
Liste multidimensionnelle :
Tri multi-champs des notes et des notes
>>> depuis l'opérateur import itemgetter
>>> 'Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'] ,['Rob',86,'E']] >>> trié(gameresult, key=itemgetter(2, 1))
[['Mandy', 82.5, 'A'] , ['Bob', 95.0, 'A'], ['Alan ', 86.0, 'C'], ['Rob', 86, 'E']]
Liste mixte dans le dictionnaire :
>>> :['M',7],
... 'Zhang' : ['E',2],... 'Wang' :['p',3],
.. 'Du':['C',2]}
>>> de l'opérateur import itemgetter
>>> trié(mydict.iteritems(),key=lambda(k,v ):operator.itemgetter(1)(v))
[('Zhang', ['E', 2]), ('Du' , ['C', 2]), ('Wang', [ 'p', 3]), ('Li', ['M', 7])]
Dictionnaire mixte dans la liste :
Trier plusieurs valeurs clés note et nom
>>> gameresult = [{"name":"Bob","wins":10, "losses":3,"rating":75.00},
... {"name": "David", "wins": 3, "loses": 5, "rating": 57.00}] >>> de l'opérateur import itemgetter
>> ;> trié(gameresult,key=itemgetter("rating","name"))
[{'gagne' : 3, 'rating' : 57,0, 'name' : 'David', 'perd' : 5 }, {'wins' : 10, 'losses' : 3, 'name' : 'Bob', 'rating' : 75.0}]
> ;>>
Pour plus de tri python () et articles liés sorted(), veuillez faire attention au site Web PHP chinois !