如何在django循环中获取值的总和

How to get sum of values inside django loop

在我的循环中,我正在获取变量中的值我想获得这些值的总和。代码被赋予值

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

但我只得到除了总和之外的值,任何人都可以帮助我相关的 tihs 吗??

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

我认为这是因为 getsum 是在循环内定义的,所以它在每次迭代时都被重置为 0。将它移出循环,看看是否有帮助:

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

print(get_sum)

根本问题已在评论和 RHSmith159 的回答中得到解决 - 但您可能仍然对如何编写正确的 pythonic 代码感兴趣...

第一点:Python 的 for 循环属于 foreach 类型——您直接迭代列表或任何可迭代对象,而不是进行类似 C 的索引访问。 IOW,而不是

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

正确的用法是:

for char in lst:
    print(char)

然后 python 有一个内置的 sum() 函数,它接受一个可迭代对象并对它的值求和,以及可用于 transform/filter 一个可迭代对象的生成器表达式。所以你的代码可以减少到一行:

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

附带说明:在运行时没有 "json object" 这样的东西。 JSON 是一种文本格式(IOW 是一个字符串),反序列化一个 json 格式的字符串会产生一个 Python 对象——通常是一个字典或一个字典列表——所以 json_object 可能不是最好的名称 - 这些数据已从某些 json 文本中反序列化这一事实无关紧要。