TypeError: get() takes no keyword arguments

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 "<stdin>", line 1, in <module>
TypeError: get() takes no keyword arguments
>>> d.get(0, 0)
0

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)

Many docs and tutorials, for instance https://www.tutorialspoint.com/python/dictionary_get.htm, erroneously specify the syntax as

dict.get(key, default = None)

instead of

dict.get(key, default)

Tags:

Python