“object of type 'NoneType' has no len()” error

穿精又带淫゛_ 提交于 2019-12-03 15:44:48

问题


I'm seeing weird behavior on this code:

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)

My web2py app gives me this error:

if len(images['cover']) == 0:
TypeError: object of type 'NoneType' has no len()

I can't figure out what's wrong in this. Maybe some scope issue?


回答1:


You assign something new to images['cover']:

images['cover'] = pic.path_thumb_l

where pic.path_thumb_l is None at some point in your code.

You probably meant to append instead:

images['cover'].append(pic.path_thumb_l)



回答2:


your problem is that

if len(images['cover']) == 0:

checks the LENGTH of the value of images['cover'] what you meant to do is check if it HAS a value.

do this instead:

if not images['cover']:




回答3:


The first time you assign: images['cover'] = pic.path_thumb_l, it replaces the value of the empty list initially stored in images['cover'] with the value of pic.path_thumb_l which is None.

Maybe your code in this line must be images['cover'].append(pic.path_thumb_l)



来源:https://stackoverflow.com/questions/11816844/object-of-type-nonetype-has-no-len-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!