如何基于多个列表生成Python嵌套字典并得到预期完整输出
代码调整方案
问题原因
你当前代码的print(proj)语句写在for循环的内部缩进块中,所以每次循环执行完项目信息写入操作后都会打印一次当前的字典内容,才会出现逐次输出增量字典的情况。
另外代码还存在变量命名冲突的隐患:存储项目名的列表名和循环迭代变量都命名为project,循环执行时会覆盖原列表变量,后续如果要复用该列表会出现异常,同时原列表里的Prjoect 4存在拼写错误,建议一并修正。
如果你暂时不需要复用原项目列表,仅将print(proj)移出for循环也可以实现只输出最终完整字典的需求,修改命名是为了避免后续出现潜在逻辑错误。
调整后的完整代码
proj = {} # 原列表名project修改为projects,避免和循环变量重名,同时修正项目4的拼写错误 projects = ["Project 1","Project 2","Project 3", "Project 4", "Project 5"] scraping_valuable_data = [5898,3000,3245,9066,6002] data_annotation = [70200,52900,6000,82813,68400] project_manager = [80000,90000,70000,70000,90000] AI_R_and_D = [50000,50000,50000,50000,50000] infrastructure_costs = [3600,2000,3600,3600,3600] integration_costs = [2500,3500,2500,2500,2500] maintenance_costs = [50000,50000,50000,50000,60000] num_R_and_D = [2,3,2,3,2] time_scale_project = [12,6,18,12,18] project_impact = [0.9,0.5,0.4,0.8,0.1] for i, project in enumerate(projects): proj[project] = { 'scraping_valuable_data': scraping_valuable_data[i], 'data_annotation':data_annotation[i], 'project_manager':project_manager[i], 'AI_R_and_D':AI_R_and_D[i], 'infrastructure_costs':infrastructure_costs[i], 'integration_costs':integration_costs[i], 'maintenance_costs':maintenance_costs[i], 'num_R_and_D':num_R_and_D[i], 'time_scale_project':time_scale_project[i], 'project_impact':project_impact[i] } # print移到循环外,所有项目写入完成后仅执行一次打印 print(proj)
内容的提问来源于stack exchange,提问作者ilhan ilkay
相关产品推荐
相关产品推荐

