AttributeError: объект ‘float’ не имеет атрибута ‘append’ при попытке добавить значения к существующему ключу

#python #python-3.x #dictionary

#python #python-3.x #словарь

Вопрос:

Попытка добавить значения с плавающей запятой к тому же ключу в словаре типов defaultdic.

 from collection import defaultdict

new_dict= defaultdict(list)

for row in list_dict:
    acct=row[acct]
    time_spent= float(row[time_spent])

    if (acct not in new_dict):
        new_dict[acct] = time_spent
    else:
        new_dict[acct].append(time_spent)
 

выдает ошибку:

 AttributeError: 'float' object has no attribute 'append'
 

Если я удалю float,

 time_spent= float(row[time_spent])
 

дает мне,

 AttributeError: 'str' object has no attribute 'append'
 

Я должен добавить эти time_spent в список значений позже, поэтому я бы хотел, чтобы они были с плавающей точкой.

Ответ №1:

Когда acct это не так new_dict , вы присваиваете новому ключу значение с плавающей запятой ( time_spent ). Поскольку вы используете a defaultdict , который автоматически создаст пустое list значение при первом чтении ключа, вы должны удалить проверку и безоговорочно append новое значение:

 time_spent= float(row[time_spent])
new_dict[acct].append(time_spent)