【发布时间】:2020-02-18 08:42:11
【问题描述】:
我正在尝试从 Web 服务获取一些信息并将其置于循环中,但是,我陷入了这个令人讨厌的错误。
for game in r['result']['data']:
print("id:{} \n Name {}".format(game['id'], game['name']))
lista.append(**game)
这个列表应该从函数中返回,但我不能知道这个错误!
id:937296541
Name Dead Zombie Drop Crush - Military Training Adventure
Traceback (most recent call last):
File "games_info.py", line 195, in <module>
cli()
File "C:\Users\Guilherme\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "C:\Users\Guilherme\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "C:\Users\Guilherme\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\Guilherme\AppData\Local\Programs\Python\Python37\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "games_info.py", line 184, in cli
listaTot = dumpb(dti, dtf, token)
File "games_info.py", line 134, in dumpb
lista.append(**game)
AttributeError: 'dict' object has no attribute 'append'
实际上list被伪装成一个类定义的对象列表。
gameVar = Game(game['age_rating'], game['average_user_rating'],
game['current_version_release_date'], game['description'],
game['developer'], game['genres'], game['icon_url'],
game['id'], game['inapp_purchases'], game['languages'],
game['name'], game['original_release_date'], game['price'],
game['primary_genre'], game['size'], game['subtitle'],
game['url'], game['user_rating_count'])
lista.append(gameVar)
【问题讨论】:
-
看起来
lista并不是真正的list,而是dict。要了解这是如何发生的,您必须向我们展示您在哪里定义lista -
lista 是一个字典
-
如错误消息所示,Python 中的字典不提供追加操作。您可以改为将新值分配给字典中它们各自的键。
-
你的
lista不是一个列表,它是一个字典,你可以看到在你的错误堆栈跟踪中,它说AttributeError: 'dict' object has no attribute 'append'。 Python 的错误处理能力优于人类,因此您可以 100% 确定它是字典而不是列表 -
感谢快速帮助的家伙,所以,lista 是一个类定义的字典
标签: python python-3.x list dictionary append