Подтвердить что ты не робот

TypeError: get() не принимает аргументы ключевых слов

Я новичок в Python, и я пытаюсь в основном создать хеш-таблицу, которая проверяет, указывает ли ключ на значение в таблице, а если нет, инициализирует его пустым массивом. Оскорбительной частью моего кода является строка:

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

Я получаю сообщение об ошибке:

TypeError: get() takes no keyword arguments

Но в документации (и различных частях кода примера) я вижу, что она принимает аргумент по умолчанию:

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

Ниже приведен синтаксис метода get():

dict.get(key, default = None)

В Stack нет ничего об этом, поэтому я предполагаю, что это ошибка начинающего?

4b9b3361

Ответ 1

В сообщении об ошибке говорится, что get не принимает аргументы ключевого слова, но вы предоставляете default=0

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

Ответ 2

В связи с тем, как разрабатывались API-интерфейсы уровня Python, многие встроенные функции и методы фактически не имеют имен для своих аргументов. Даже если документация вызывает аргумент default, функция не распознает имя default как ссылающийся на необязательный второй аргумент. Вы должны указать аргумент позитивно:

>>> 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