请看一下这个程序。
append函数用None替换列表。错误附在下面
class Solution(object):
def isIsomorphic(self, a, b):
ad = {}
bd = {}
if len(a) != len(b):
return False
for i in range(len(a)):
if a[i] in ad:
ad[a[i]] = ad[a[i]].append(i)
else:
ad[a[i]] = [i]
if b[i] in bd:
bd[b[i]] = bd[b[i]].append(i)
else:
bd[b[i]] = [i]
ret = True
for j,k in zip(ad.values(), bd.values()):
if j != k:
return False
return ret
sol = Solution()
print sol.isIsomorphic("ccc", "aab")
错误
ad[a[i]] = ad[a[i]].append(i)
AttributeError: 'NoneType' object has no attribute 'append'
答案 0 :(得分:1)
append
将值附加到列表中并返回None
。因此,ad[a[i]] = ad[a[i]].append(i)
表示您将ad[a[i]]
替换为None
。
Here是说明它的文档的一部分
您可能已经注意到插入,删除或排序等方法 只修改列表没有打印返回值 - 它们返回 默认无。 [1]这是所有可变数据的设计原则 Python中的结构。
答案 1 :(得分:0)
在这里你去:你正在分配ad [a [i]]。追加[i]到ad [a [i]]这是不需要的。它的函数调用并返回None。你只需要做广告[a [i]]。追加(i)
class Solution(object):
def isIsomorphic(self, a, b):
ad = {}
bd = {}
if len(a) != len(b):
return False
for i in range(len(a)):
if a[i] in ad:
ad[a[i]].append(i)
else:
ad[a[i]] = [i]
if b[i] in bd:
bd[b[i]].append(i)
else:
bd[b[i]] = [i]
ret = True
for j,k in zip(ad.values(), bd.values()):
if j != k:
return False
return ret
sol = Solution() print sol.isIsomorphic(" ccc"," aab")