Python中如何将JSON文件格式化为嵌套列表结构?
嘿,这个问题我碰到过类似的情况!首先得明确一点:你想要的[[a:1], [b:2]]其实不是标准的JSON格式(JSON要求键必须是带双引号的字符串,而且列表里不能用冒号语法),所以我们得先把数据转换成合法的JSON结构,再写入文件。
直接用json.dump的separator参数肯定不行,因为这个参数只是用来调整键值对之间、元素之间的分隔符(比如要不要加空格),没法改变数据的整体层级结构。要实现你要的格式,核心是先把原字典转换成目标结构,再序列化。
举个具体的例子:
如果你想要的是每个键值对单独放在一个列表里,里面是一个字典(合法的JSON格式应该是[[{"a":1}], [{"b":2}]]),可以这么做:
import json counter = {"a":1,"b":2} # 把原字典转换为目标结构:每个键值对包装成单元素列表,再统一放到大列表里 formatted_data = [[{k: v}] for k, v in counter.items()] with open('egg.json', 'w') as json_file: # 用indent参数可以让输出的JSON更易读,不加的话就是一行紧凑格式 json.dump(formatted_data, json_file, indent=2)
运行后生成的egg.json内容会是:
[ [ { "a": 1 } ], [ { "b": 2 } ] ]
如果你其实想要的是每个键值对作为列表的两个元素(比如[["a",1], ["b",2]]),那转换逻辑更简单:
formatted_data = [[k, v] for k, v in counter.items()]
总结一下:JSON的序列化是严格基于你传入的Python数据结构的,没法像CSV那样通过参数直接调整输出结构。必须先把原数据转换成你需要的层级结构,再用json.dump写入文件,这样才能得到想要的格式。
内容的提问来源于stack exchange,提问作者Aimee
相关产品推荐
相关产品推荐

