Python : AttributeError: 'NoneType' object has no attribute 'append'

前端 未结 2 1660
名媛妹妹
名媛妹妹 2020-12-03 08:27

My program looks like

# global
item_to_bucket_list_map = {}

def fill_item_bucket_map(items, buckets):
    global item_to_bucket_list_map

    for i in rang         


        
相关标签:
2条回答
  • 2020-12-03 09:15
    [...]
    for i in range(1, items + 1):
        j = 1
        while i * j <= buckets:
            if j == 1:
                mylist = []
            else:
                mylist = item_to_bucket_list_map.get(i)
            mylist.append(j)
            item_to_bucket_list_map[i] = mylist
            j += 1
        print "Item=%s, bucket=%s" % (i, item_to_bucket_list_map.get(i))
    

    The while loop, however, can be simplified to

        for j in range(1, buckets / i + 1): # + 1 due to the <=
            if j == 1:
                mylist = []
            else:
                mylist = item_to_bucket_list_map.get(i)
            mylist.append(j)
            item_to_bucket_list_map[i] = mylist
    
    0 讨论(0)
  • 2020-12-03 09:29

    Actually you stored None here: append() changes the list in place and returns None

     item_to_bucket_list_map[i] = (item_to_bucket_list_map.get(i)).append(j)
    

    example:

    In [42]: lis = [1,2,3]
    
    In [43]: print lis.append(4)
    None
    
    In [44]: lis
    Out[44]: [1, 2, 3, 4]
    
    0 讨论(0)
提交回复
热议问题