2012-02-14 10 views
1

私は外部の文書からリストをインポートし、そのリストを辞書に入力しています。この質問は、関数内の変数に関連付けられたすべての値に適用できます。関数が完了したら、変数をグローバル変数に代入することなく関数からその情報を引き出すにはどうすればよいですか?申し訳ありませんが、この質問は非常に明確ではない、私はそれを発声するのに困っています。辞書を作成した関数の中から辞書を抜く(Python)

ここまでのプログラムです。辞書 '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 

答えて

2

用途:

​​3210

は変数resultdictionaryから返された値を割り当てます。

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') 
+0

*電球*私は重要なことが分からないことを知っていました。私は値が私の辞書の中にあるかどうかを調べるときに何も返さないときにあなたがまだ示唆した変更を行った。真実でも偽でもない – tw0fifths

+0

'line'が' \ n'で終わっていることが原因です。 'line = line.strip()'を試してみてください。私は何を意味するかを示すためにいくつかのコードを追加しました。 – unutbu

+0

それはちょうどそれでした。私は 'line.strip()'を何かに割り当てずにやろうとしていました。あなたの 'line = line.strip()'を置くと、それはすばらしく動作しました!私は本当に何かを価値に割り当てる必要がある時と、それをやめなければならない時を見つけ出す必要があります。 'a.strip()'と同様に、 'sorted(list)'は何かに割り当てられる必要があります。 – tw0fifths

1

は、変数に関数の結果を割り当てます。

result = dictionary(fin) # note that this variable does not need to be named 'result' 
1

こっちジェネレータ式を使用して、クリーンな方法ですdictコンストラクタとコンテキストハンドラを使ってmファイルハンドルを開閉する。

>>> 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!' 
+0

キーをチェックするときにFalseを返すようにしました。なぜすべてが偽に戻っているのか理解できませんでした。だから私は辞書全体を印刷し、すべての単語は '\ n'を持っています。私はそれを剥がす必要がある。 – tw0fifths

+0

ハァッ?上記のメソッドは既に改行を取り除いています。 – wim

+0

混乱して申し訳ありません。あなたのコードは完璧に機能しました!私は間違ったボックスに自分のコメントを書いた。 – tw0fifths

関連する問題