【问题标题】:Python list can´t append: Syntax Error: append() takes no keyword argumentsPython 列表不能追加:语法错误:append() 没有关键字参数
【发布时间】: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


【解决方案1】:

lista 是一个字典,它没有附加功能。您可以将其更改为列表,只需像这样定义。 lista = []

【讨论】:

    【解决方案2】:

    AttributeError: 'dict' 对象没有属性 'append'。
    您已将 'lista' 定义为字典,它没有附加功能。

    你可以定义为::

    lista = []
    lista.append(**game)
    

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 2015-05-14
      • 2020-01-24
      • 2020-02-10
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多