字典:Get():AttributeError:'NoneType'对象没有属性'append'

时间:2020-03-15 18:42:18

标签: python-3.x list dictionary

在这里,我试图附加一个字典。如果存在键,则创建一个新列表,然后追加。 使用get()函数。

但是它给出了'NONE Type对象的错误。

class Solution:

    def solve(self, A, B):
        save_x={}
        save_y={}
        l=len(A)
        for i in range(l):
            save_x[A[i]]=save_x.get(A[i],[]).append(B[i])
            save_y[B[i]]=save_y.get(B[i],[]).append(A[i])

        print(save_x,save_y)

1 个答案:

答案 0 :(得分:1)

list.append不返回任何内容(返回None),您可以使用以下方法解决更改for循环的问题:

for i in range(l):
    save_x[A[i]] = save_x.get(A[i], []) + [B[i]]
    save_y[B[i]] = save_y.get(B[i], []) + [A[i]]

此版本有点慢,因为它在每次迭代时都会创建一个新列表

或者您可以使用dict.setdefault并更新密钥(如果已存在)(快一点):

for i in range(l):
    save_x.setdefault(A[i], []).append(B[i])
    save_y.setdefault(B[i], []).append(A[i])

最好的选择是使用collections.defaultdict

from collections import defaultdict


save_x = defaultdict(list)
save_y = defaultdict(list)
for a, b in zip(A, B):
    save_x[a].append(b)
    save_y[b].append(a)