FishHookХорошо. Пусть такая операция имеет смысл только со списком. Так
Да блин! sorted не изменяет исходный список, в вашей интерпретации эта операция бессмысленна.
from codecs import open from re import split text = open("load", "r", "utf-8") s = text.read() words = split('[\d\W]+', s) words.remove('') ALPHABET = {i[1]: i[0] for i in enumerate(u"абвгдеёжзийклмнопрстуфхцчшщъыьэюя")} for i in sorted(words, key=lambda x: ALPHABET[x[0].lower()]): print(i)
d = {} for w in words: if w != '': if w in d: d[w] += 1 else: d[w] = 1 items = list(d.items())
for i in items: print(i)
Иными словами, получается так:
('мёд', 1)а я хочу, чтоб было так:
('муляж', 1)
('мороз', 1)
('метёлка', 1)
('ель', 2)
('ёжик', 1)
('ежевика', 3)
('емеля', 1)
('метла', 1)
('улитка', 3)
('ёлка', 3)
('ежевика', 3)
('ель', 2)
('емеля', 1)
('ёжик', 1)
('ёлка', 3)
('метёлка', 1)
('метла', 1)
('мёд', 1)
('мороз', 1)
('муляж', 1)
('улитка', 3)
ShamanНу, тут “ёжик” идет перед “ежовый”, что не корректно, т. к. по алфавиту е идёт перед ё.
е ё ё моё ёжик ежовый ёлочка ель ельник упырь ягель ямка
В итоге я сделал, что было надо, хоть и с большим количеством кода, но уменьшить его, похоже, не получится
Тем не менее, спасибо всем откликнувшимся, кое-что из Ваших ответов я почерпнул!