Возврат списка слов в алфавитном порядке - чтение из файлов - PullRequest
0 голосов
/ 19 февраля 2020

Для этого кода мне нужно вернуть список всех уникальных слов (слов, которые появляются в файле только один раз). Вот часть моего кода:

    words = []
    with open(self.filepath, 'r') as f:
        for l in f:
            new_word = l.split()

            words.append(new_word)
    return words

Слово определяется как любой текст, разделенный пробелами (пробелы, переводы строки или табуляции). В дополнение к добавлению уникальных слов в список, мне нужно, чтобы они были написаны строчными буквами и в алфавитном порядке. Я застрял на том, как я должен это сделать. У нас нет доступа к файлу.

Ответы [ 3 ]

1 голос
/ 19 февраля 2020

дедупликация путем сохранения в set и преобразования только в отсортированный list в конце:

def load_words(self):
    words = set()  # Use set for accumulation without dups
    with open(self.filepath) as f:
        for l in f:
            new_words = l.lower().split()  # Convert to lowercase before splitting

            words.update(new_words)  # Add all new words in bulk as individual words, not single list of words for line
    return sorted(words)  # Convert unordered set to sorted list of words
0 голосов
/ 19 февраля 2020

Одним из способов было бы использование списочного понимания

words = set()
with open(self.filepath, 'r') as f:
    # value can be anything, just added 1
    words.update({str(i.lower()):1 for i in f.split()}.keys())

return sorted(words)

0 голосов
/ 19 февраля 2020

Сначала выполните .lower (), а затем .split ()

new_word = l.lower().strip().split(' ')

Вы также можете добавить оператор if, чтобы перехватить пробел

if l is ' ' or l is '\n':
  # catch whitespace
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...