2013-11-20 3 views
2

Я хотел бы определить функцию scaryDict(), которая принимает один параметр (a textfile) и возвращает слова из textfile в алфавитном порядке, в основном производит словарь, но не печатает ни одного или двух буквенных слов.Функция словаря python, текстовый файл

Вот то, что я до сих пор ... это не так много, но я не знаю, на следующем шаге

def scaryDict(fineName): 

    inFile = open(fileName,'r') 
    lines = inFile.read() 
    line = lines.split() 
    myDict = {} 
    for word in inFile: 
     myDict[words] = [] 
     #I am not sure what goes between the line above and below 
    for x in lines: 
     print(word, end='\n') 

ответ

1

Вы делаете хорошо до line = lines.split(). Но цикл for должен проходить через линейный массив, а не inFile.

for word in line: 
    if len(word) > 2: # Make sure to check the word length! 
     myDict[word] = 'something' 

Я не уверен, что вы хотите со словарем (может получить слово рассчитывать?), Но как только у вас есть, вы можете получить слова, которые вы добавили к нему,

allWords = myDict.keys() # so allWords is now a list of words 

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

allWords.sort() 
+0

я должен заполнить пустой словарь со словами из текстового файла в алфавитном порядке – user2816609

0

Я бы хранить все слова в набор (для устранения Dups), то вид, который устанавливается:

#!/usr/bin/python3 

def scaryDict(fileName): 
    with open(fileName) as inFile: 
     return sorted(set(word 
          for line in inFile 
          for word in line.split() 
          if len(word) > 2)) 

scaryWords = scaryDict('frankenstein.txt') 
print ('\n'.join(scaryWords)) 
0

Также имейте в виду, как в 2.5 «с» файл содержит введите и Выйдите методы, которые могут предотвратить некоторые проблемы (такие, как этот файл никогда не получать закрытые)

with open(...) as f: 
    for line in f: 
     <do something with line> 

уникальных set

Сортировка set

Теперь вы можете положить все это вместе.

0

жаль, что я 3 года поздно:) вот моя версия

def scaryDict(): 
    infile = open('filename', 'r') 
    content = infile.read() 
    infile.close() 

    table = str.maketrans('.`/()|,\';!:"?=-', 15 * ' ') 
    content = content.translate(table) 

    words = content.split() 
    new_words = list() 

    for word in words: 
     if len(word) > 2: 
      new_words.append(word) 

    new_words = list(set(new_words)) 
    new_words.sort() 

    for word in new_words: 
     print(word) 
Смежные вопросы