为什么我不能在字典中附加值?

2024-04-18 04:05:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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'


Tags: keynonemyareakeysfloatdictra
3条回答

必须将“无”更改为适当的值。 例如,请尝试定义的变量或字符串/整数,而不是“无”

您的所有值都是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))

squares_dict = {key: None for key in keys}意味着squares_dict持有键,每个键的值是None,这反过来意味着squares_dict[1]是None,NoneType没有append属性

相关问题 更多 >