从创建它的函数中提取字典(python)

时间:2012-02-14 02:50:48

标签: python function dictionary

我从外部文档导入列表,并将该列表输入到字典中。此问题适用于与函数内部变量关联的几乎所有值。函数完成后,如何从函数中提取该信息而不必将变量指定为全局变量。对不起,如果这个问题不是很清楚,我很难发出声音。

到目前为止,这是该计划。字典'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

3 个答案:

答案 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!'