TypeError:'type'对象在使用字典时不可订阅,

时间:2017-03-05 10:34:55

标签: python dictionary types

以下是我的代码的一部分: -

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

3 个答案:

答案 0 :(得分:2)

一般建议:当这样的一行导致您遇到麻烦时,请将其分解成碎片,以查看哪一段代码确实导致了问题。

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

你的问题就在那里,因为你试图将float(一种类型)用作字典。要解决此问题,请将行更改为:

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

至于我之前的建议,你可以看到,如果你将线分成两行:

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

你可能已经注意到你的错误更容易了:))

答案 1 :(得分:0)

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

你可能意味着:

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

注意,您的init函数绝对没有,应该删除。此外,还不清楚为什么要定义words_posscorewords_pos两次。

答案 2 :(得分:0)

行错误:$(document).ready(function() { $("#property_year_built").change(function() { $("#bouwjaar_field").val($('#property_year_built').val()); }); }); $(document).ready(function() { $("#property_zip").change(function() { $("#postcode_field").val($('#property_zip').val()); }); }); $(document).ready(function() { $("#property_price").change(function() { $("#koopprijs_field").val($('#property_price').val()); }); });

它应该是:

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

尝试:words_posscore[row[0]] = float(row[1]) 您将收到同样的错误:

float['123']

关于你的问题:

  

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

错误消息是针对作业的RHS(右侧)而不是--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-2-bc6c2694ccfa> in <module>() ----> 1 float['123'] TypeError: 'type' object is not subscriptable 处的LHS。

因此python不认为它是一个类型对象而不是dict。

希望澄清它:)