2017-03-17 98 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 

檔案說:貓追狗。

輸出兩種:

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

字符串已經不可改變。 –

+0

是的,我真的很累,不能相信我說過。 – eeskonivich

回答

0

由於tuple被用作一個函數,任何端接逗號正由功能語法,而不是產生一個元組消耗。

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

但你並不需要調用tuple()

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

好吧,這是有道理的,但最終的元組包括終止逗號。有沒有辦法爲每個不包含逗號的單詞生成一個元組? – eeskonivich

+0

否。將一個序列傳遞給'tuple()'會產生一個元組,每個元素都是原始序列的一個元素。 –