Bonjour à tous,
alors mon soucis concerne le tri. J'ai exploité ce lien >>Tir<< sur lequel j'ai appris pas mal de choses, cependant j'ai pas trouvé mon bonheur 
alors mon soucis est le suivant :
j'ai une liste qui contient des chaines de caractères
L = ["LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE"]
et une autre liste qui contient des valeurs.
Value = [0.2589, 0.84569, 1.26587, 4.5893, 1.02458, 8.0125, -1.8]
Je souhaite trier ma liste de nombre du plus petit au plus grand tout en triant ma liste de chaines de caractères afin d'obtenir le résultat suivant :
1 2 3
|
value=[-1.8, 0.2589, 0.84569, 1.02458, 1.26587, 4.5893, 8.0125]
L= ["DIMANCHE", "LUNDI", "MARDI", "VENDREDI", "MERCREDI","JEUDI", "SAMEDI"] |
J'ai testé ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
L = ["LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE"]
print L
value = [0.2589, 0.84569, 1.26587, 4.5893, 1.02458, 8.0125, -1.8]
print value
print "********************************"
conv = lambda i: L[i]
value.sort(key=conv)
print value
T = []
for i in range(0,len(L)):
T.append(L[value[i]])
print T |
et j'obtiens le message suivant :
1 2 3 4 5 6 7
|
Traceback (most recent call last):
File "C:/Users/user/Desktop/enveloppe/tri_indexe_list.py", line 11, in <module>
value.sort(key=conv)
File "C:/Users/user/Desktop/enveloppe/tri_indexe_list.py", line 10, in <lambda>
conv = lambda i: L[i]
TypeError: list indices must be integers, not float |
Je comprend que finalement il faut que la liste de mes valeurs soit des entiers, mais je souhaite trier une list contenant des float
.
Une idée ?
Merci d'avance pour votre aide.
Partager