2017-03-05 86 views
-3

这里是我的代码的一部分: -类型错误:使用字典时,“类型”对象未标化,

words_custom=[] 
sentence_list=[] 
pos_tags=[] 
words_posscore={} 
words_neg={} 
words_pos={} 
func_words=[] 

def init(): 
    global words_posscore 
    global words_neg 
    global words_pos 
    global func_words 

    words_posscore={} 

    with open('words_posscore.csv','r',encoding='utf-8') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      print(type(row)) 
      print(row) 
      words_posscore[row[0]]=float[row[1]] 

    with open('negative_words.csv','r',encoding='utf-8') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      words_neg[row[0]]=1 

    words_pos={} 

    with open('positive_words.csv','r',encoding='utf-8') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      words_pos[row[0]]=1 


    with open('Feature/func_words.csv','r',encoding='utf-8') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      func_words.append(row[0]) 

我收到以下错误: -

Traceback (most recent call last): 
    File "train.py", line 586, in <module> 
    init() 
    File "train.py", line 120, in init 
    words_posscore[row[0]]=float[row[1]] 
TypeError: 'type' object is not subscriptable 

虽然我使用words_posscore作为字典并初始化它,我不知道为什么它将它视为一个类型对象而不是字典。

我已经看过回答以下问题: -

TypeError: 'type' object is not subscriptable when indexing in to a dictionary

+1

应该是'float(row [1])' –

+0

做得好,谁downvoted所有(正确)的答案。 –

回答

1

一般建议:当这样的一条线使你的麻烦,把它分解成碎片,看看哪一段代码实际上是造成问题的原因。

words_posscore[row[0]]=float[row[1]] 
          ^^ 

你的问题在那里,因为你正在尝试使用float类型作为字典。为了解决这个问题,行更改为:

words_posscore[row[0]]=float(row[1]) 

至于我的意见前,你可以看到,如果你有分隔行成2行:

value = float[row[1]] 
words_posscore[row[0]] = value 

你可能已经注意到,您misake玉米粥更容易:)

0

该错误不使用words_posscore作为字典来;它来自使用float作为字典。显然,这是一种类型,而不是字典。

你大概的意思是:

words_posscore[row[0]]=float(row[1]) 

注意,您init功能确实绝对没有,应予删除。此外,您不清楚为什么您定义两次words_posscorewords_pos。在行

+0

实际上,我在这里发布的代码是在init函数内部的,但是发布缩进的过程受到了干扰,我没有注意到这一点。感谢帮助 。 – MayankPratap

0

错误:words_posscore[row[0]]=float[row[1]]

它应该是:

words_posscore[row[0]] = float(row[1]) 

尝试:float['123'],你会得到同样的错误:关于你的问题

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-2-bc6c2694ccfa> in <module>() 
----> 1 float['123'] 

TypeError: 'type' object is not subscriptable 

Although I am using words_posscore as a dictionary and have initialized it, I don't know why it is considering it a type object instead of dict.

错误消息针对作业的RHS(右侧),而不是words_posscore[row[0]]=float[row[1]]的LHS。

因此python没有考虑它是一个类型的对象而不是字典。

希望有所澄清吧:)

相关问题