Как получить сумму значений внутри цикла django - PullRequest
0 голосов
/ 30 марта 2020

внутри моего l oop Я получаю значения в переменной. Я хочу получить сумму этих значений. Код имеет значение

for index in range(len(json_objects)):
getsum = 0
sum = json_objects[index]['fields']['bill']
getsum += float(sum) 
print(getsum)

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

>  json_objects[index]['fields']['bill'] i am getting values like 100
> and 200 in a loop i want the sum 300 in getsum variable

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Я думаю, это потому, что getsum определено внутри l oop, поэтому он сбрасывается в 0 на каждой итерации. Переместите его за пределы l oop и посмотрите, поможет ли это:

get_sum = 0
for index in range(len(json_objects)):
    sum = json_objects[index]['fields']['bill']
    get_sum += float(sum)

print(get_sum)
0 голосов
/ 30 марта 2020

Проблема root уже была рассмотрена в комментариях и в ответе RHSmith159 - но вы все равно можете быть заинтересованы в том, как написать правильный код pythoni c ...

Первый пункт: Python for l oop относится к типу foreach - вы выполняете итерацию непосредственно в своем списке или в любой другой итерации, вместо того чтобы делать индексированный доступ, подобный C. IOW вместо

lst = ["a", "b", "c"]
for i in range(len(lst)):
    print(lst[i])

правильное использование:

for char in lst:
    print(char)

Тогда python имеет встроенные функции sum(), которые принимают итеративные и суммируют свои значения, и генератор выражения, которые можно использовать для преобразования / фильтрации итерируемого. Таким образом, ваш код может быть сокращен до одной строки:

result = sum(float(obj["fields"]["bill"]) for obj in json_object)

В качестве примечания: во время выполнения не существует такого понятия, как «json объект». JSON - это текстовый формат (IOW - строка), а десериализация строки, отформатированной json, дает объект Python - обычно это dict или список диктов - так что json_object, возможно, не лучшее имя - тот факт, что эти данные не были сериализованы из некоторого json текста, не имеет значения.

...