2015-07-13 147 views
0

專家我有這樣的代碼:Python字典存儲鍵值

text = [] 
pos = {} 
neg = {} 
h = HTMLParser.HTMLParser() 
i = 0 

with open('DATA/test.csv', 'rb') as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
     i += 1 
     token = word_tokenize(h.unescape(row[3].decode('utf-8'))) 
     # print(h.unescape(row[1] + ' ' + row[3].decode('utf8'))) 
     if row[1] == "0": 
      pos[i] = {i: token} 
     elif row[1] == "1": 
      neg.update({i: token}) 

     text += token 

text = nltk.Text(text) 
neg = nltk.Text(neg) 
pos = nltk.Text(pos) 

print(pos) 

我希望每個負或正是在格式{1:「不管」},{2:「另一」}然而我只能得到以下關鍵值:Text:1 2 3 4 9 10 20 24 ...

+0

你的字典在哪裏?你在哪一行嘗試*得到*它的鍵值? –

+0

'nltk.Text'預計可迭代。字典中的迭代是一組鍵。當你正確地調用'nltk.Text(pos)'時,你期望什麼? – njzk2

+0

我希望輸出爲[{1:'something'},{2:'something else'}],但是此刻我的輸出是 HeKToN

回答

1

nltk.Text的構造函數需要str的迭代。當一個dict被用作迭代時,只有這些鍵被迭代。

您可以通過調用dict.items()得到一個迭代過(key, value)雙,但不會滿足nltk.Text構造。

+0

這不是隻有這樣。如果你期望[{1:「something」},{2:「something else」}],那麼pos和neg應該是列表,並且你應該使用pos.append({i:...})。爲了滿足nltk.Text(),您可以在創建時將它們存儲爲字符串,或稍後運行pos = map(str,pos)。 – Dalen

+0

非常感謝您的幫助! – HeKToN