nel*_*Zka 1 python dictionary tuples list python-2.7
从数据库我得到格式的结果:
result = ([('A', 210L), ('B', 1L), ('C', 269L)], 3)
Run Code Online (Sandbox Code Playgroud)
我需要在Python中将其更改为:
[{'description':'A','sum':210},{'description':'B','sum':1},{'description':'C','sum':269}]
Run Code Online (Sandbox Code Playgroud)
我尝试了各种选择,但没有得到我需要的东西..
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
Run Code Online (Sandbox Code Playgroud)
它导致:
[{'description':'C','sum':269},{'description':'C','sum':269},{'description':'C','sum':269}]
Run Code Online (Sandbox Code Playgroud)
因此,在该步骤中all_descriptions_sums.append(description_sum),字典不仅仅附加到列表中,而且还重写了先前的值.
非常感谢你的帮助!
你可以使用列表理解:
result = [{'description': a, 'sum': int(b)} for a, b in result[0]]
Run Code Online (Sandbox Code Playgroud)
但是如果你不想,你的代码中有什么问题,就是你在循环之前初始化字典.您必须在每次迭代中重新声明它,如:
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
Run Code Online (Sandbox Code Playgroud)