从数据库中我得到的格式为:
result = ([('A', 210L), ('B', 1L), ('C', 269L)], 3)
我需要在 Python 中将其更改为:
[{'description':'A','sum':210},{'description':'B','sum':1},{'description':'C','sum':269}]
我尝试了各种选择,但没有得到我需要的..
rows = len(result[0])
description_sum = {}
all_descriptions_sums = []
for i in range(rows):
description_sum['description'] = result[0][i][0]
description_sum['sum'] = int(result[0][i][1])
all_descriptions_sums.append(description_sum)
return all_descriptions_sums
结果是:
[{'description':'C','sum':269},{'description':'C','sum':269},{'description':'C','sum':269}]
因此在 all_descriptions_sums.append(description_sum) 这一步中,字典不仅附加到列表中,而且还重写了之前的值..
非常感谢您的帮助!
请您参考如下方法:
你可以只使用列表理解:
result = [{'description': a, 'sum': int(b)} for a, b in result[0]]
但是如果您不想这样做,那么您的代码中的错误在于您在循环之前初始化了字典。您必须在每次迭代中重新声明它,如:
rows = len(result[0])
all_descriptions_sums = []
for i in range(rows):
description_sum = {}
description_sum['description'] = result[0][i][0]
description_sum['sum'] = int(result[0][i][1])
all_descriptions_sums.append(description_sum)
return all_descriptions_sums
