Python 3:多列表转指定结构字典及JSON写入问题求助
解决思路与代码实现
你原来的代码存在几个明显问题:
- 变量未定义:代码中写的
name, company, color无对应定义,实际应使用你的list1, list3, list2 - zip用法错误:
dict(zip())要求传入包含键值对的可迭代对象,直接传多个列表不符合语法,需先将三个列表的对应元素分组,再与keys配对生成单个字典 - 键名不匹配:你定义的
keys里是colours,但目标字典中是color,拼写不一致
正确实现代码
list1 = ["Hulk", "Flash", "Tesla"] list2 = ["green", "23", "thunder"] list3 = ["Marvel", "DC_comics", "0.0"] # 定义与目标字典匹配的键名 keys = ["name", "color", "company"] # 把三个列表的对应元素分组,逐个与keys配对生成字典 item_list = [dict(zip(keys, group)) for group in zip(list1, list2, list3)] # 生成最终需要的字典结构 final_dict = {"eo:dict": item_list} # 验证结果 print(final_dict)
代码说明
zip(list1, list2, list3)会将三个列表对应位置的元素打包成元组,比如("Hulk", "green", "Marvel")、("Flash", "23", "DC_comics")- 列表推导式遍历每个打包后的元组,通过
dict(zip(keys, group))将键与对应值配对成单个字典 - 最后将所有小字典存入列表,外层包裹成
"eo:dict"对应的结构
运行后即可得到你需要的字典,后续可使用json.dump()将该字典写入指定JSON文件。
内容的提问来源于stack exchange,提问作者sylar_80
相关产品推荐
相关产品推荐

