Найти - Пользователи
Полная версия: Сортировка списка по алфавиту
Начало » Python для новичков » Сортировка списка по алфавиту
1
Sca
Доброго времени суток!

У меня имеется список следующей структуры:
mylist = ["Поле11;Фамилия И.О.;Поле31;Поле41;", "Поле12;Фамилия2 И.О.;Поле32;Поле42;", "Поле13;Фамилия3 И.О.;Поле33;Поле43;"]
Поля с ФИО идут не в алфавитном порядке. И мне нужно элементы моего списка упорядочить по этому ФИО, т.е.:

было:
“Поле11;Суриков А.А.;Поле31;Поле41;”, “Поле12;Ардов И.И.;Поле32;Поле42;”, “Поле13;Васильева М.С.;Поле33;Поле43;”
в итоге:
“Поле12;Ардов И.И.;Поле32;Поле42;”, “Поле13;Васильева М.С.;Поле33;Поле43;”, “Поле11;Суриков А.А.;Поле31;Поле41;”

Соответственно в python имеется sort(). Можно ли в параметре у метода указать как-то, что мне нужно отсортировать по части элемента списка? Или как ещё можно решить поставленную задачу?

Заранее спасибо!
sp3
spisok =[u"Поле11;Суриков А.А.;Поле31;Поле41;", u"Поле12;Ардов И.И.;Поле32;Поле42;", u"Поле13;Васильева М.С.;Поле33;Поле43;"]

d = {}
for item in spisok:
d[item.split(';')[1]] = item

k = d.keys()
k.sort()
for key in k :
print d[key]
можно и короче :)
pyuser
from operator import itemgetter

spisok =[u"Поле11;Суриков А.А.;Поле31;Поле41;", u"Поле12;Ардов И.И.;Поле32;Поле42;", u"Поле13;Васильева М.С.;Поле33;Поле43;"]
sorted_spisok = [";".join(x) for x in sorted((y.split(";") for y in spisok), key=itemgetter(1))]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB