Python嵌套循环更新字典未得到预期输出问题求助
问题分析
- 内层循环中每次遍历列表元素时都直接覆盖变量
x,没有将生成的单键字典收集到列表中,最终每个key对应的value只会保留列表最后一个元素转换后的结果 - 末尾的
out.update(out)是无效操作,字典用自身内容更新自身不会产生任何变化
修正后代码
categories = {'categories_a1' : [{'group': '13GH9', 'number': '1'},{'group': '17KPO', 'number': '73'}, {'group': '26BN11', 'number': '2'}, {'group': '813W', 'number': '99'}], 'categories_a2' : [{'group': '99ITY', 'number': '12'},{'group': 'JH871', 'number': '15'}, {'group': 'OLH83', 'number': '99'}, {'group': '44RTQ', 'number': '1'}]} expected= {'categories_a1' : [{'13GH9': '1'},{'17KPO':'73'}, {'26BN11':'2'}, {'813W': '99'}], 'categories_a2' : [{'99ITY':'12'},{'JH871': '15'}, {'OLH83': '99'}, {'44RTQ':'1'}]} out = {} for k, v in categories.items(): # 初始化当前key对应的空列表,收集所有转换后的单键字典 tmp_list = [] for item in v: tmp_list.append({item['group']: item['number']}) out[k] = tmp_list # 验证结果与预期一致 print(out == expected) # 输出True
也可以用推导式写更简洁的版本:
out = {k: [{item['group']: item['number']} for item in v] for k, v in categories.items()}
内容的提问来源于stack exchange,提问作者siash
相关产品推荐
相关产品推荐

