Форум сайта python.su
0
ShamanВот я и попросил указания путей к сокращению. Ладно, сортировки списков слов мне привели много, спасибо, но, как уже тут было сказано, к меня из словаря получается не список отдельных слов, а список пар ключ-значение. Примеры сортировок списков слов к списку пар не подходят. Может, покажете, как кратко сортировать список пар?
Это на любом языке будет копрокодом.
Офлайн
0
FishHookОн на сортировке списка из пар (слово, число) выдаёт мне ошибку. Я уже про это писал.
Рабочий вариант сортировки по всему слову предлагал py.user.next
Чем он вам не нравится?
Офлайн
88
FishHookМда. Кортежи, оказывается, сравниваются не как строки…
Рабочий вариант сортировки по всему слову предлагал py.user.next
Офлайн
0
ShamanЗнаете, я надеялся на конструктив, а нарываюсь на сарказм. Если есть способ сделать мою задачу с меньшим количеством кода, чем у меня, покажите мне его, а если нет, так и скажите. Не надо тратить свое время на бессодержательные посты.
Мда. Кортежи, оказывается, сравниваются не как строки…
Офлайн
88
PawlПост адресовался не Вам и я заинтересован в нахождении оптимального решения данной проблемы не меньше вашего. Остыньте.
Знаете, я надеялся на конструктив, а нарываюсь на сарказм. Если есть способ сделать мою задачу с меньшим количеством кода, чем у меня, покажите мне его, а если нет, так и скажите. Не надо тратить свое время на бессодержательные посты.
Отредактировано Shaman (Май 25, 2015 20:44:51)
Офлайн
0
ShamanТогда надеюсь, что вы его найдёте!
Пост адресовался не Вам и я заинтересован в нахождении оптимального решения данной проблемы не меньше вашего. Остыньте.
Офлайн
88
PawlСуть проблемы в отсутствии правильной таблицы/таблиц трансляции. Вопрос в том, где и какие они должны быть.
Тогда надеюсь, что вы его найдёте!
sorted([[1,2],[3,4]], key=lambda x: x[0])
from operator import itemgetter sorted([[1,2],[3,4]], key=itemgetter(0))
Отредактировано Shaman (Май 25, 2015 21:17:36)
Офлайн
186
> Он на сортировке списка из пар (слово, число) выдаёт мне ошибку. Я уже про это писал.
idx = [u"а", u"ё", u"е", u"я"] sorted([(u"а", 1), (u"ё",2), (u"е",3)], key=lambda x: idx.index(x[0][0]))
Офлайн
857
Pawl
Спасибо за пример, но вы укзываете сортировку списка, а у меня - карта (или словарь по-питонски ) К сожалению, ваш вариант с картой не проходит.
>>> lst = [('а', 1), ('б', 1), ('е', 1), ('ё', 1), ... ('А', 1), ('Б', 1), ('Е', 1), ('Ё', 1), ... ('ба', 1), ('вб', 1), ('ёе', 1), ('жё', 1), ... ('БА', 1), ('ВБ', 1), ('ЁЕ', 1), ('ЖЁ', 1)] >>> >>> def tr(s): ... alpha = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' \ ... 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' ... return tuple(map(alpha.index, s)) ... >>> lst.sort(key=lambda i: tr(i[0])) >>> lst [('а', 1), ('б', 1), ('ба', 1), ('вб', 1), ('е', 1), ('ё', 1), ('ёе', 1), ('жё', 1), ('А', 1), ('Б', 1), ('БА', 1), ('ВБ', 1), ('Е', 1), ('Ё', 1), ('ЁЕ', 1), ('ЖЁ', 1)] >>>
PawlНе, ты просто не понимаешь язык, потому что пытаешься понять его, основываясь на своих знаниях других языков. Это примерно как сисадмин думает, что раз он давно сисадмин, то он и программист неплохой.
Что-то мне подсказывает, что если в языке не предусмотрена возможность сортировки карт “искаропки”
PawlПро lambda'ы я недавно объяснял.
лямбды я в питоне не понимаю
Отредактировано py.user.next (Май 26, 2015 02:04:23)
Офлайн
0
RodegastТак сортировка проходит корректно только по первым буквам:
Он на сортировке списка из пар (слово, число) выдаёт мне ошибку. Я уже про это писал.
idx =
sorted(, key=lambda x: idx.index(x))
idx = [u"а", u"б", u"в", u"г", u"д", u"е", u"ё", u"ж", u"з", u"и", u"й", u"к", u"л", u"м", u"н", u"о", u"п", u"р", u"с", u"т", u"у", u"ф", u"х", u"ц", u"ч", u"ш", u"щ", u"ъ", u"ы", u"ь", u"э", u"ю", u"я"] for i in sorted([(u"метла", 1), (u"улитка", 3), (u"мороз", 1), (u"ёжик", 1), (u"емеля", 1), (u"ежевика", 3), (u"ель", 2), (u"ёлка", 3), (u"метёлка", 1), (u"муляж", 1), (u"мёд", 1)], key=lambda x: idx.index(x[0][0])): print(i)
('емеля', 1)
('ежевика', 3)
('ель', 2)
('ёжик', 1)
('ёлка', 3)
('метла', 1)
('мороз', 1)
('метёлка', 1)
('муляж', 1)
('мёд', 1)
('улитка', 3)
py.user.next
Я думал, ты сможешь переделать, поэтому просто показал, как нужно сделать компаратор.
lst = [('метла', 1), ('улитка', 3), ('мороз', 1), ('ёжик', 1), ('емеля', 1), ('ежевика', 3), ('ель', 2), ('ёлка', 3), ('метёлка', 1), ('муляж', 1), ('мёд', 1)] def tr(s): alpha = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' \ 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' return tuple(map(alpha.index, s)) lst.sort(key=lambda i: tr(i[0])) for j in list: print(j)
C:\Python34\python.exe Cиспользую питон версии 3.4.3Users/Pawl/IdeaProjects/pyFirst/first.py
Traceback (most recent call last):
File “CUsers/Pawl/IdeaProjects/pyFirst/first.py”, line 12, in <module>
for j in list:
TypeError: ‘type’ object is not iterable
for j in items:
print(j)
Отредактировано Pawl (Май 26, 2015 09:31:05)
Офлайн