Python append用None替换现有列表

时间:2017-10-14 05:18:59

标签: python list dictionary data-structures append

请看一下这个程序。

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'     

2 个答案:

答案 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")