Skip to main content
 首页 » 编程设计

Python从元组列表中生成字典列表

2025年05月04日12youxin

从数据库中我得到的格式为:

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