为什么我无法在我的字典中附加值?

时间:2018-02-12 13:30:27

标签: python python-3.x

keys = [1,2,3,5,6,7,8,9]
squares_dict = {key: None for key in keys}

def box_number(my_dict,xmax,ymax,xmin,ymin,key):
    ra = Rectangle(float(xmax),
                   float(ymax),
                   float(xmin),
                   float(ymin))
    # print(area(ra, Rectangle(float(my_dict[key][2][0]),float(my_dict[key][3][0]),0,0)))
    if area(ra, Rectangle(float(my_dict[key][2][0]),float(my_dict[key][3][0]),0,0)) == area(ra,ra):

        squares_dict[1].append(key,xmax,ymax,xmin,ymin)//This line

我遇到的问题与共享代码的最后一行有关,我得到的错误是squares_dict[1].append(key,xmax,ymax,xmin,ymin) AttributeError: 'NoneType' object has no attribute 'append'

3 个答案:

答案 0 :(得分:0)

squares_dict = {key: None for key in keys}表示squares_dict持有密钥,每个密钥的值为None,这意味着squares_dict[1]为无,NoneType没有附加属性

答案 1 :(得分:0)

您必须将None更改为正确的值。 例如,而不是None尝试定义的变量或字符串/整数

答案 2 :(得分:0)

你的dict中所有值都是None。您可以将空列表创建为值。

squares_dict = {key: [] for key in keys}

甚至可能更好,摆脱创造并使用defaultdict

import collections
squares_dict = collections.defaultdict(list)

所以第一次,如果dict中没有键,defaultdict会创建一个新的空列表。

之后,你必须追加一个tuple,而不是几个值(append只接受一个参数):

squares_dict[1].append((key,xmax,ymax,xmin,ymin))