2015-07-13 144 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