我从外部文档导入列表,并将该列表输入到字典中。此问题适用于与函数内部变量关联的几乎所有值。函数完成后,如何从函数中提取该信息而不必将变量指定为全局变量。对不起,如果这个问题不是很清楚,我很难发出声音。
到目前为止,这是该计划。字典'result'在函数中有值,但是当我尝试从函数外部调用它时它是空的。
fin = open('words.txt')
def dictionary(words):
result = {}
for line in words:
result[line] = 'yupp!' # dont care about value at the moment
return result
word_dict = dictionary(fin)
'the' in word_dict# checking to see if a word is in the dictionary
答案 0 :(得分:2)
使用:
result = dictionary(fin)
将dictionary
返回的值分配给变量result
。
请注意result
是一个全局变量,所以我不确定你的意思是什么
必须将变量分配为全局“。
def dictionary(words):
result = {}
for word in words:
word = word.strip()
result[word] = 'yupp!'
return result
with open('words.txt') as fin:
result = dictionary(fin)
print('the' in result)
可替换地,
def dictionary(words):
return dict.fromkeys((word.strip() for word in words), 'yupp')
答案 1 :(得分:1)
将函数的结果分配给变量:
result = dictionary(fin) # note that this variable does not need to be named 'result'
答案 2 :(得分:1)
这是一种更简洁的方法,在dict构造函数上使用生成器表达式并使用上下文处理程序来管理打开/关闭文件句柄。
>>> def dictionary(fname='/usr/share/dict/words'):
... with open(fname) as words:
... return dict((word.strip(), 'yupp!') for word in words)
...
>>> my_dictionary = dictionary()
>>> 'the' in my_dictionary
True
>>> my_dictionary['the']
'yupp!'