首页 > 解决方案 > Python'str'对象即使在列表上操作时也没有属性'append'?

问题描述

我不断收到这个简单的错误,我不明白为什么。我正在尝试删除多个明文中相同索引处的重复字母,但我得到的这封信似乎不合逻辑,因为l它是一个较小数组的数组,而这些较小的数组有一个列表作为元素来说明在这个特定索引处找到了哪些唯一字母. 请注意,打印会按预期返回列表。

n = []
l = []
for x in range(83):
    l.append( [-1, [] ] )
print(l[0][1])
for x in solved_letters:
    if x[0] not in n:
        n.append(x[0])
        l[x[0]][0], l[x[0]][1] = x[0], x[1]
    else:
        for v in x[1]:
            if v not in l[x[0]][1]:
                l[x[0]][1].append(v)

样本solved_letters

[[30, 'a'], [32, 'w'], [34, ' '], [36, 's'], [42, 'n'], [45, 'p'], ...]

标签: pythonpython-3.xlistindexing

解决方案


问题是solved_letters第二个元素(即solved_letters[*][1])是字母而不是列表,所以一旦你l在下面的行中分配它们 - l[x[0]][0], l[x[0]][1] = x[0], x[1]l将包含一些东西 line - l[30][30, 'a']。下次您尝试使用循环(即for v in x[1])访问它时,您可以遍历一个字符串,但您不能追加,因为它是一个字符串而不是列表。

为了克服这个问题,我将 - 更改l[x[0]][0], l[x[0]][1] = x[0], x[1]为 - l[x[0]][0], l[x[0]][1] = x[0], [x[1]]


推荐阅读