在这里,我试图附加一个字典。如果存在键,则创建一个新列表,然后追加。 使用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)
答案 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)