#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
, если нет, вам, возможно, придется использовать NumPy4. Я только что исправил свой исходный пост, диапазон — это не то, что отбрасывало его. Он по-прежнему не позволяет мне суммировать
Ответ №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)
, что в этом случае также произойдет сбой…