Как отсортировать словарь по количеству слов по значению, сохранив исходный порядок ключей? [дубликат]Python

Программы на Python
Ответить
Anonymous
 Как отсортировать словарь по количеству слов по значению, сохранив исходный порядок ключей? [дубликат]

Сообщение Anonymous »

Я пытаюсь подсчитать частоту слов в тексте, а затем отсортировать их по убыванию частоты. Таким образом, если два слова имеют одинаковую частоту, они должны оставаться в том же порядке, в котором они впервые появились в исходном тексте (а не в алфавитном порядке). Чтобы понять это, посмотрите пример ниже:
Пример ввода:

Код: Выделить всё

Hi I live in America I love cooking
После преобразования в нижний регистр ожидаемый результат:

Код: Выделить всё

{"i": 2, "hi": 1, "live": 1, "in": 1, "america": 1, "love": 1, "cooking": 1}
Текущий подход:

Код: Выделить всё

words = input().lower().split()
d = {i: words.count(i) for i in words}
dk = list(d.keys())
dv = sorted(d.values())[::-1]
sd = sorted(d.items())

nd = dict()
for i in dv:
for j in dk:
if d[j] == i:
nd[j] = i
print(nd)
Это работает, но вызовwords.count() для каждого элемента делает временную сложность очень низкой, а вложенные циклы еще больше ее ухудшают. Я не могу придумать лучший алгоритм для замены этого.


Подробнее здесь: https://stackoverflow.com/questions/798 ... original-k
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»