ilia_2s
Фев. 4, 2011 22:19:39
Господа, подскажите пожалуйста:
Нужно список отсортировать вида
source=, по цифрам после второй “;”,
думал сделать как-то так source.sort( key = lambda x: x.split(';') ), но походу дела, что-то не правильно.
Гугл красивых решений по данному вопросу не подсказывает…
Zubchick
Фев. 4, 2011 22:28:27
так у вас список отсортирован уже.
>>> source=["a;b;123","c;d;345","e;f;567", 's;h;100']
>>> source.sort(key = lambda x: x.split(';')[2])
>>> source
['s;h;100', 'a;b;123', 'c;d;345', 'e;f;567']
ilia_2s
Фев. 4, 2011 22:34:22
Ну это в примере он отсортирован, на самом деле нет….
У меня в беспорядке результаты…. А у Вас так, то есть работает????
Странно….
А может быть глюк, потому что там 20 миллионов элементов в списке?
Программка отрабатывает без ошибок, щас еще раз попробую.
ilia_2s
Фев. 4, 2011 22:50:05
Да, понял в чем проблема, он их ни как целые сортирует, а как строковые, поправил на key = lambda x: int(x.split(';')) , теперь все в порядке!
)))))) Всем спасибо!