我正在尝试编写一个函数,该函数从文本文件中获取单词列表,并将文件中的每个单词附加到列表中,其名称与文本文件相同。例如,使用文本文件Verbs.txt
和Nouns.txt
会导致Verbs.txt
中的所有字词都在verbs
列表中,而nouns
中的所有名词都会出现在for
列表中名单。我试图在def loadAllWords():
fileList = ['Adjectives.txt', 'Adverbs.txt', 'Conjunctions.txt',
'IntransitiveVerbs.txt', 'Leadin.txt', 'Nounmarkers.txt',
'Nouns.txt', 'TransitiveVerbs.txt']
for file in fileList:
infile = open(file, 'r')
word_type = file[:-4]
word_list = [line for line in infile]
return word_list
循环中执行此操作:
def loadAllWords():
infile = open("Adjectives.txt", "r")
wordList = []
wordList = [word for word in infile]
return wordList
当然,我可以轻松地为每个文本文件做一次:
np.random.randint
但是我希望我的功能可以自动完成每个功能。有没有办法做到这一点,或者我应该坚持每个文件的for循环?
答案 0 :(得分:1)
你应该使用dict
之类的(未经测试):
results = {}
for file in file_list:
infile = open(file, 'r')
word_type = file[:-4]
results[word_type] = [line for line in infile]
return results
你也不需要列表理解,你可以这样做:
results[word_type] = list(infile)
答案 1 :(得分:1)
您可以通过操作locals()
字典来创建具有自定义名称的新变量,该字典是存储局部变量的地方。但很难想象任何情况下这都是个好主意。我强烈推荐Stephen Roach建议使用字典,这样可以让你更清楚地跟踪列表。但是如果你真的想为每个文件创建局部变量,你可以对他的代码稍作修改:
results = {}
for file in file_list:
with open(file, 'r') as infile:
word_type = file[:-4]
results[word_type] = list(infile)
# store each list in a local variable with that name
locals.update(results)