TypeError: get() takes no keyword arguments

匿名 (未验证) 提交于 2019-12-03 01:16:02

问题:

I'm new at Python, and I'm trying to basically make a hash table that checks if a key points to a value in the table, and if not, initializes it to an empty array. The offending part of my code is the line:

converted_comments[submission.id] = converted_comments.get(submission.id, default=0) 

I get the error:

TypeError: get() takes no keyword arguments 

But in the documentation (and various pieces of example code), I can see that it does take a default argument:

https://docs.python.org/2/library/stdtypes.html#dict.get http://www.tutorialspoint.com/python/dictionary_get.htm

Following is the syntax for get() method:

dict.get(key, default=None)

There's nothing about this on The Stack, so I assume it's a beginner mistake?

回答1:

The error message says that get takes no keyword arguments but you are providing one with default=0

converted_comments[submission.id] = converted_comments.get(submission.id, 0) 


回答2:

Due to the way the Python C-level APIs developed, a lot of built-in functions and methods don't actually have names for their arguments. Even if the documentation calls the argument default, the function doesn't recognize the name default as referring to the optional second argument. You have to provide the argument positionally:

>>> d = {1: 2} >>> d.get(0, default=0) Traceback (most recent call last):   File "", line 1, in  TypeError: get() takes no keyword arguments >>> d.get(0, 0) 0 


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