Python如何将嵌套列表元素正确添加到嵌套字典中
问题原因
原代码无法得到预期结果的核心问题有两个:
- 循环内直接覆盖了原本存储嵌套列表的
list变量,每次遍历都会重新给这个变量赋值为单条字典,循环结束后自然只保留最后一个元素对应的字典 - 没有定义外层存储所有条目的结果容器,也没有给每个子字典分配从1开始的数字索引键
- 额外提醒:不要用
list/dict这类Python内置类型名当自定义变量名,会覆盖内置方法引发后续报错
可行实现方案
使用enumerate函数做从1开始的索引计数,遍历过程中把每个子列表生成的字典存入结果字典对应键位即可:
source_data = [['710.09', '65.09', '2.0'], ['710.09', '65.09', '3.0']] categories = {'rent': None, 'size': None, 'rooms': None} result = {} # start=1指定索引从1开始计数,匹配预期输出的键值 for index, item in enumerate(source_data, start=1): result[index] = dict(zip(categories.keys(), item))
运行上述代码得到的输出完全匹配预期:
{1: {'rent': '710.09', 'size': '65.09', 'rooms': '2.0'}, 2: {'rent': '710.09', 'size': '65.09', 'rooms': '3.0'}}
如果需要把字符串格式的数值转为浮点数,只需要调整赋值逻辑即可:
for index, item in enumerate(source_data, start=1): result[index] = dict(zip(categories.keys(), map(float, item)))
内容的提问来源于stack exchange,提问作者Nana
相关产品推荐
相关产品推荐

