我在这段代码上看到了奇怪的行为:
images = dict(cover=[],second_row=[],additional_rows=[])
for pic in pictures:
if len(images['cover']) == 0:
images['cover'] = pic.path_thumb_l
elif len(images['second_row']) < 3:
images['second_row'].append(pic.path_thumb_m)
else:
images['additional_rows'].append(pic.path_thumb_s)
我的web2py应用程序给了我这个错误:
if len(images['cover']) == 0: TypeError: object of type 'NoneType' has no len()
我无法弄清楚这有什么不对。也许是一些范围问题?
答案 0 :(得分:15)
您为images['cover']
分配了新内容:
images['cover'] = pic.path_thumb_l
代码中某处的pic.path_thumb_l
为None
。
你可能想要追加:
images['cover'].append(pic.path_thumb_l)
答案 1 :(得分:8)
你的问题是那个
if len(images['cover']) == 0:
检查图像['cover']值的长度,你打算做的是检查它是否有值。
改为:
if not images['cover']:
答案 2 :(得分:1)
第一次分配:images['cover'] = pic.path_thumb_l
时,它会将images['cover']
中最初存储的空列表的值替换为pic.path_thumb_l
的值None
。
此行中的代码可能必须为images['cover'].append(pic.path_thumb_l)