【问题标题】:Python Dictionary stores only key valuesPython Dictionary 只存储键值
【发布时间】:2015-07-13 02:00:46
【问题描述】:

伙计们,我有这个代码:

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)

我希望每个 neg 或 pos 的格式为 {1: 'whatever'}, {2: 'another'} 但是我只得到键值,例如: Text: 1 2 3 4 9 10 20 24 ...

【问题讨论】:

  • 你的字典在哪里?您试图在哪一行获取它的键值?
  • nltk.Text 需要一个可迭代的。 dict 中的 iterable 是一组键。当您确切地致电nltk.Text(pos) 时,您期望什么?
  • 我希望输出为 [{1: 'something'},{2: 'something else'}] 但我现在的输出是

标签: python dictionary output


【解决方案1】:

nltk.Text 的构造函数需要 str 的可迭代对象。当 dict 被用作可迭代对象时,只有键被迭代。

您可以通过在dict 上调用.items() 来获得对(key, value) 对的可迭代,但这不能满足nltk.Text 构造函数。

【讨论】:

  • 不仅如此。如果你期望 [{1: "something"}, {2: "something else"}] 那么 pos 和 neg 应该是列表,你应该使用 pos.append({i: ...})。为了满足 nltk.Text() 您可以在创建时将它们存储为字符串,或者稍后运行 pos = map(str, pos)。
  • 非常感谢您的回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多