提示用户输入一个单词并打印包含python中单词的所有字符的文件中的所有单词

时间:2015-03-31 08:51:05

标签: python file dictionary

例如,我有一个文件中的单词列表。(下面列出)

aback

abacus

abandon

abandoned

logo

loincloth

loiter

loll

还有其他一些,一个非常大的单词列表!现在用户可以输入一个单词 例如“go”,然后它会显示包含章程'g''o', "go", "logo", "goo"的所有字词,依此类推。

我必须首先将文件变成字典类型,我真的不知道,该怎么做。

这是我做过的事情,我试图将同一个字母中的所有单词放在一起, 例如:

words = {'a': ['airport'], 'b': ['bathroom', 'boss', 'bottle'], 'e':['elephant']}


import operator
file = open("d1.txt","r")
words = {}
for line in file:
        line = line.strip()
        first_char = line[0]
        if first_char not in words:
                words[first_char] = []
                words[first_char].append(line)
sorted_words = sorted(words.items(),key = operator.itemgetter(1))           

print(sorted_words)

user_input = str(input("Pleae enter a ward: "))
v1 = words[user_input]
print(v1)

不幸的是,这就是我所做的一切,任何人都可以帮助我!

1 个答案:

答案 0 :(得分:1)

这看起来有些奇怪,但无论如何,做这样的事情会更容易

 word_to_search = 'gosh' # assume that this is user input
 letters_list = list(word_to_search)
 result = []
 for letter in letters_list:
   for word in file.read().split('\n'):  #here you choose separator by which your words splitted
     if letter in word:
       result.append(word)    #here you'll get a list of all words with matching letters

请注意,会有重复,要摆脱它们,你可以

  result = set(result)  #here you will get list of only unique words

如果你想使用字典

import string

alphabet = list(string.ascii_lowercase)
words_list = file.read().split('\n')
words_dict = dict((letter, dict()) for letter in alphabet)
for letter in alphabet:
  for word in words_list:
       if word.startswith(letter):
          words_dict[letter].append(word)

这将为您提供字母作为键的字母和单词列表作为值

希望你能弄清楚如何在你的词典中迭代列表。 提示:你可以加入dict的值并迭代它们