Я почти закончил свою проблему сортировки, много часов занимался серфингом в Интернете. Я наткнулся на чрезвычайно полезное руководство по сортировке словарей в Python, но проблема, которая, кажется, повторяется всякий раз, когда я пытаюсь сортировать, - это факт, что мои данные, требующие сортировки, представляют собой тип данных с плавающей точкой.Сортировка десятичных знаков в словаре
Пример того, как создать 'names'x' 'и 'avmph'x'' переменные
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))
В результате я получаю следующее:
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
Я не уверен, как для редактирования моего бывшего кода как .sort (float), работавшего на моем «avmph», этот метод должен позволить мне возвращать как «имена», так и «avmph». Любая помощь была бы очень обязательна.
Большое вам спасибо, это сработало мгновенно. – ryan2405
@ ryan2405 не беспокоится, как вы создаете 'names2' и т. Д.?? –
Просто используя первый раздел кода (очевидно, обмениваясь 1 на 2). Требования к работе не требуют повышения эффективности, и мой учитель продолжает выражать этот факт. Я пробовал пока петли безрезультатно. Весь мой код мог бы сделать серьезный взлет, чтобы повысить эффективность, но он выполняет свою заданную задачу, и я, к сожалению, привязан к времени. – ryan2405