2017-03-17 15 views
0

テキストファイルを取り込み、文字列のリストに変換しています。それから私はすべてのユニークな言葉を鍵にするように努めています。私はそれらを不変またはタプルにしたい。私が持っている問題は、単語が常に文字に分割されていることです。 similar post hereが見つかりましたが、効果はありません。単語のリストをタプルのバインドされた単語に変換する

誰かが私を助けて、私がどこに間違っているのか、なぜtuple(word)tuple(word,)と同じ結果をもたらすのかを説明できれば。

with open(f, 'r') as f: 
    clean_str = f.read().translate(None, string.punctuation).lower().split() 
    key_dic = {tuple(word,): [] for word in set(clean_str)} 
    return key_dic 

ファイル:猫は犬を追いかけました。両方のため

出力:tuple関数として使用されているので

{('t', 'h', 'e'): [], ('c', 'a', 't'): [], ('c', 'h', 'a', 's', 'e', 'd'): [], ('d', 'o', 'g'): []} 
+0

文字列はすでに不変です。 –

+0

ええ、私は本当に疲れていました。 – eeskonivich

答えて

0

、任意終端コンマ機能文法によって消費されるのではなくタプルを生成しています。

>>> tuple('foo') 
('f', 'o', 'o') 
>>> tuple('foo',) 
('f', 'o', 'o') 
>>> tuple(('foo',)) 
('foo',) 

しかし、あなたはtuple()を起動する必要はありません。

>>> {('foo',) : 'bar'} 
{('foo',): 'bar'} 
+0

これは意味がありますが、結果として得られるタプルには終了するコンマが含まれています。カンマを含まない単語ごとにタプルを生成する方法はありますか? – eeskonivich

+0

いいえ。シーケンスを 'tuple()'に渡すと、各要素が元のシーケンスの要素であるタプルになります。 –

関連する問題