J'ai presque terminé mon problème de tri, avec de nombreuses heures à surfer sur le Web. Je suis tombé sur un guide extrêmement utile pour trier les dictionnaires en Python, mais un problème qui semble récurrents quand j'essaie de trier est le fait que mes données qui nécessitent un tri sont un type de données float.Tri des décimales dans un dictionnaire
Exemple de comment je crée 'names'x' 'et 'avmph'x'' des variables
file1=open("1.txt",'r')
line1=file1.readlines()
names1=line1[0].rstrip('\n')
avmph1=line1[3].rstrip('\n')
mydict={names1:avmph1,
names2:avmph2,
names3:avmph3,
names4:avmph4,
names5:avmph5,
names6:avmph6,
names7:avmph7,
names8:avmph8,
names9:avmph9,
names10:avmph10}
for key, value in sorted(mydict.items(),key=lambda item:(item[1],item[0])):
print ("%s : %s" % (key,value))
Le résultat que je reçois est comme suit:
1987dodd : 10
3219guy : 11.6
2198adams : 12.2
8765james : 13.2
4321jones : 6.3
5432kane : 6.3
9876smith : 6.5
8754smith : 8.7
7654max : 9
6543dunne : 9.5
#seems to sort values that are greater than 10 (2 digits before decimal) separately
Je ne suis pas sûr de la façon dont pour éditer mon code existant comme .sort (float) a travaillé sur mon 'avmph' seul, cette méthode devrait me permettre de retourner à la fois 'noms' et 'avmph'. Toute aide serait très obligée.
Merci beaucoup, cela a fonctionné instantanément. – ryan2405
@ ryan2405 pas de soucis, comment créez-vous 'names2' etc.? –
Juste en utilisant la première section de code (évidemment échanger 1 pour 2). Les exigences du travail ne demandent pas d'efficacité et mon professeur continue d'exprimer le fait. J'ai essayé les boucles en vain. Tout mon code pourrait faire un gros effort pour augmenter l'efficacité, mais il accomplit sa tâche spécifique et je suis malheureusement à court de temps. – ryan2405