错误! 'int'对象没有属性'append'

时间:2015-02-20 03:05:22

标签: python

我是python的新手,并尝试编写一个带有字符串列表的过程,将它们分解为单独的单词,然后创建一个字典,将单词映射到它们出现的每个字符串。

例如: makeInverseIndex(['hello world','hello','hello cat','hellolot of cats'])== {'hello':{0,1,2},'cat':{2},'of' :{3},'世界':{0},'猫':{3},'hellolot':{3}}

这是我的代码:

def makeInverseIndex(strlist):

d = {}
for i in range(len(strlist)):  
    list = strlist[i].split()
    print(list)
    print(d)
    for j in range(len(list)):
        if list[j] in d:
            d[list[j]].append(i)
        else:
            d[list[j]] = i
        print(d)

return d

我认为问题在于我使用追加的方式。我已经看到了其他一些这样的问题,但我似乎无法将答案应用到我的代码中。

1 个答案:

答案 0 :(得分:7)

问题不在于您使用追加的方式。有问题的一行是

d[list[j]] = i

指定一个整数。你想要

d[list[j]] = [i]
而是

,它会分配一个您以后可以附加的列表。

请注意,您可以在此处使用setdefaultcollections.defaultdict

d = {}
for i, s in enumerate(strlist):
    for c in s.split():
        d.setdefault(c, []).append(i)
return d

另请注意,我删除了所有range(len(..))个实例 - 这些实例在C中是必需的,但在Python中则不是。另外,请记住list是变量的错误名称,因为它掩盖了built-in