Skip to main content
 首页 » 编程设计

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

2025年05月04日25dflying

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

例如: makeInverseIndex(['hello world','hello','hello cat','hellolot of cats']) == {'hello': {0, 1, 2}, 'cat': {2}, 'of' : {3}, 'world': {0}, 'cats': {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 

我认为问题出在我使用 append 的方式上。我见过其他一些类似的问题,但我似乎无法将答案应用到我的代码中。

请您参考如下方法:

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

d[list[j]] = i 

分配一个整数。你想要

d[list[j]] = [i] 

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

请注意,您可以使用 setdefault或 collections.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。 .