Как суммировать числа из списка: «объект’float’ не является итеративным»?

#python #list #dictionary #sum #integer

#python #Список #словарь #сумма #целое число

Вопрос:

У меня есть список чисел, которые я извлек из словаря, используя:

 amounts = (float(itemDict['TotalAmount']))
print(amounts)
 

Сокращенный список выходных данных:

83.31

13.8

280.98

141.69

92.44

369.15

37.4 и т.д….

но когда я пытаюсь:

 print (sum(amounts))
 

Я получаю:

Ошибка типа: объект ‘float’ не является итеративным

как мне суммировать эти числа? Заранее спасибо!

Комментарии:

1. Почему вы используете range … разве вы не сразу после print(sum(amounts)) ?

2. Это довольно просто. Ошибка точно сообщает вам, что происходит. amounts является float . range Функция не примет это в качестве аргумента. Какое значение itemDict['TotalAmount'] ?

3. Проблема заключается range() int только в том, что вы присваиваете ему float значения. Таким образом, вы можете либо преобразовать аргумент в int , если нет, вам, возможно, придется использовать NumPy

4. Я только что исправил свой исходный пост, диапазон — это не то, что отбрасывало его. Он по-прежнему не позволяет мне суммировать

Ответ №1:

Я не знаю, что вы хотели сделать с помощью range(), но сумму этих чисел можно получить просто: sum(amounts) if amounts — это список чисел с плавающей запятой. Но ваш образец не соответствует print(amounts) (который должен выглядеть как список), поэтому в вашем вопросе, вероятно, отсутствует какая-то информация.

Возможно, вы делаете это в цикле по списку словарей, и в этом случае вы могли бы добавить итоговое значение в переменную по мере продвижения:

 total = 0
for itemDict in listOfDicts:
    total  = float(itemDict['TotalAmount'])
 

или в понимании:

 total = sum(float(itemDict['TotalAmount']) for itemDict in listOfDicts)
 

Комментарии:

1. Перечитывание Q — amounts = (float(itemDict['TotalAmount'])) sems подразумевает, что это всего лишь одно число с плавающей запятой (иначе вызов float не удался бы, если бы это была последовательность / аналогичная), поэтому я ожидаю sum(amounts) , что в этом случае также произойдет сбой…