вытащить словарь из функции, которая его создала (python) - PullRequest
1 голос
/ 14 февраля 2012

Я импортирую список из внешнего документа и ввожу этот список в словарь. Этот вопрос применим практически ко всем значениям, связанным с переменной внутри функции. Как только функция завершена, как мне извлечь эту информацию из функции без необходимости назначения переменных как глобальных. Извините, если этот вопрос не очень ясен, я не могу озвучить его.

Вот программа на данный момент. словарь «результат» имеет значения в функции, но когда я пытаюсь вызвать его извне, функция становится пустой.

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 ]

2 голосов
/ 14 февраля 2012

Используйте:

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 голос
/ 14 февраля 2012

Вот более чистый способ, используя выражение генератора поверх конструктора 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!'
1 голос
/ 14 февраля 2012

Присвойте результат функции переменной:

result = dictionary(fin) # note that this variable does not need to be named 'result'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...