0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
1

Как отсортировать словарь в обратном лексикографическом порядке

12.03.2019, 12:22. Показов 12583. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я формирую словарь из потока текста в котором считаю как часто используется слово в тексте.
В итоге мне нужно получить отсортированный список из 10 самых часто встречающихся слов.

А если какие то слова встречаются одинаковое количество раз то их отсортировать В ОБРАТНОМ ЛЕКСИКОГРАФИЧЕСКОМ (по алфавиту) порядке.
Вот тут и не получается

sorted_slov = sorted(slov.items(), key=lambda x: (-x[1], x[0]))

Ключ - слово, значение - сколько раз

Если ставлю -х[0] то получаю ошибку
sorted_slov = sorted(slov.items(), key=lambda x: (-x[1], -x[0]))
TypeError: bad operand type for unary -: 'str'

Понятно что так сортировать строки нельзя

Вот мой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from sys import stdin
import string
import pymorphy2
 
a = list(map(str.rstrip, stdin))
a = " ".join(a).split()
 
translation = ''.maketrans('', '', string.punctuation)
slov = {}
 
morph = pymorphy2.MorphAnalyzer()
for el in a:
    el = el.translate(translation)
    p = morph.parse(el)
 
    if "NOUN" in p[0].tag and p[0].score > 0.5:
        slov[p[0].normal_form] = slov.get(p[0].normal_form, 0) + 1
 
sorted_slov = sorted(slov.items(), key=lambda x: (-x[1], x[0]))
 
for i in range(10):
    print(sorted_slov[i][0], end=" ")
На скриншоте видно какие элементы нужно поменять сортировкой

2 дня на поиски уже убил. Именно ОБРАТНОЙ лексикографической сортировки не нашёл ((
Миниатюры
Как отсортировать словарь в обратном лексикографическом порядке  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2019, 12:22
Ответы с готовыми решениями:

Отсортировать слова в строке в обратном лексикографическом порядке
В текстовом файле заданы слова , каждое из которых расположено на отдельной строке. Напечатать эти...

Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке
Добрый вечер. Получилось только вывести на экран список, вывести на экран отсортированный список...

Отсортировать в лексикографическом порядке
Здравствуйте! Возникли сложности с задачей, сам до конца не могу разобраться что не так, программа...

Отсортировать строки в лексикографическом порядке
разработать 2 подпрограммы,одна из которых сравнивает две строки по лексикографическому порядку,а...

Отсортировать слова в строке в лексикографическом порядке
Добрый вечер. Можете помочь с написанием программы для задания: Отсортировать слова в строке в...

3
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
12.03.2019, 12:29 2
Лучший ответ Сообщение было отмечено Realdreamer как решение

Решение

19 строку попробуйте изменить на
Python
1
sorted_slov = sorted(slov.items(), key=lambda x: (x[1],x[0]), reverse=True))
Добавлено через 44 секунды
По крайней мере на таких данных работает.
Python
1
2
3
y={100:1, 90:4, 99:3, 92:1, 101:1}
print(sorted(y.items(), key=lambda x: (x[1],x[0]), reverse=True))
#[(90, 4), (99, 3), (101, 1), (100, 1), (92, 1)]
Пример входных данных лучше выкладывайте в текстовом виде. Вряд ли кто-то захочет их вручную вбивать с картинки.
1
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
12.03.2019, 13:39 3
Цитата Сообщение от Realdreamer Посмотреть сообщение
отсортированный список из 10 самых часто встречающихся слов
Counter.
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
12.03.2019, 15:07  [ТС] 4
Получилось. спасибо большое!
Хоть я и не совсем понимаю как работает. Reverse же должен влиять на конечную сортировку.
0
12.03.2019, 15:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2019, 15:07
Помогаю со студенческими работами здесь

Отсортировать введенную строку в лексикографическом порядке
Есть вот такой вот рабочий код: #include <stdio.h> #include <string.h> #define MAX 30000 ...

Выполнить сортировку строк файла в обратном лексикографическом порядке
Имеется текстовый файл, содержащий не более 100 строк. Выполнить сортировку строк файла в обратном...

Словарь задан массивом отсортированных в лексикографическом порядке строк. Напишите программу эффективного поиска слова
Помогите, пожалуйста, решить задачку на паскале. Словарь задан массивом отсортированных в...

Отсортировать слова в строке в лексикографическом порядке (по алфавиту)
Отсортировать слова в строке в лексикографическом порядке (по алфавиту). В С.

Отсортировать слова в строке в лексикографическом порядке (по алфавиту)
Помогите, пожалуйста, написать через функцию код. Нужно ввести с клавиатуры строку символов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru