Python 如何获取django循环中的值之和
在我的循环中,我得到一个变量中的值,我想得到这些值的总和Python 如何获取django循环中的值之和,python,django,django-admin,Python,Django,Django Admin,在我的循环中,我得到一个变量中的值,我想得到这些值的总和 for index in range(len(json_objects)): getsum = 0 sum = json_objects[index]['fields']['bill'] getsum += float(sum) print(getsum) 但我得到的是除了和之外的唯一值。有谁能帮我相关的提示吗 我认为这是因为getsum是在循环中定义的,所以每次迭代时它都被重置为0。将其移到循环之外,看看这是否有帮助: get_su
for index in range(len(json_objects)):
getsum = 0
sum = json_objects[index]['fields']['bill']
getsum += float(sum)
print(getsum)
但我得到的是除了和之外的唯一值。有谁能帮我相关的提示吗
我认为这是因为
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的回答中得到了解决-但是您可能仍然对如何编写正确的Python代码感兴趣 第一点:Python的
for
循环属于foreach
类型——您可以直接迭代列表或任何iterable,而不是执行类似C的索引访问。看,而不是
lst = ["a", "b", "c"]
for i in range(len(lst)):
print(lst[i])
正确的使用方法是:
for char in lst:
print(char)
然后python有一个内置的sum()
函数,它接受一个iterable并对它的值进行求和,还有一个生成器表达式,可以用来转换/过滤iterable。因此,您的代码可以简化为一行:
result = sum(float(obj["fields"]["bill"]) for obj in json_object)
附带说明:在运行时没有“json对象”这样的东西。JSON是一种文本格式(使用字符串),对JSON格式的字符串进行非序列化会生成一个Python对象,通常是一个dict或dict列表,因此,
json\u object
可能不是最好的名称-这些数据已从某些json文本中取消序列化的事实无关紧要。您在循环中定义了getsum
,将其移动到for
语句上方。在每次迭代中将getsum
设置为零,将行getsum=0
放在循环之前
result = sum(float(obj["fields"]["bill"]) for obj in json_object)