我想定义一个函数scaryDict()
,它接受一个参数(textfile
)并按字母顺序返回textfile
中的单词,基本上生成一个字典但不打印任何一个或两个字母的单词。
这是我到目前为止所做的......虽然不多,但我不知道下一步
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')
答案 0 :(得分: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()
答案 1 :(得分:0)
我会将所有单词存储到一个集合中(以消除重复),然后对该集合进行排序:
#!/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))
答案 2 :(得分:0)
另请注意,从2.5开始,'with'文件包含输入和退出方法,这些方法可以防止某些问题(例如该文件永远不会关闭)< / p>
with open(...) as f:
for line in f:
<do something with line>
唯一set
对set
进行排序现在你可以把它们放在一起了。
答案 3 :(得分:0)
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)