我有一个Python脚本添加到列表中:
column = defaultdict(list)
[...]
for line in out.splitlines():
column[i + 1].append({"row": str(line)})
[...]
f = open(save_dir + 'table_data.json', "w+")
f.write(json.dumps(column))
f.close()
这将最终生成一个JSON文件,其字符串如下:
{ "1":[
{
"row":"Product/Descriptian"
}
],
"2":[
{
"row":"Qty/unit"
},
{
"row":"Text"
}
],
"3":[
{
"row":""
}
]}
如您所见,array["2"]
有两个值。我试图使所有数组的长度相同。所以array["1"]
和array["3"]
最终也会有两个值。你知道吗
所以为了做到这一点,我想我必须首先找到最长的数组:
longest_array = (max(map(len, column.values())))
这应该返回2
。现在我想将一个空的{"row":""}
附加到其他数组中,使其长度相同:
final = ([v + ["{'row'}: ''"] * (longest_array - len(v)) for v in column.values()])
在JSON字符串下面输出:
[
[
{
"row":"Product/Descriptian"
},
{
"row":""
}
],
[
{
"row":"Qty/unit"
},
{
"row":"Text"
}
],
[
{
"row":""
},
{
"row":""
}
]
]
这似乎起了部分作用。但是,我在新创建的JSON字符串中发现了两个错误:
似乎在第一个数组周围添加了另一个数组。JSON字符串现在以[ [ {
它删除“父”数组"1", "2" and "3"
罪魁祸首是:
其中:
column.values()
上迭代,您将丢失所有键,并且与值对应的所有列表都已“打包”到外部(主)列表中["{'row'}: ''"]
中的双引号(“)实现什么:这是一个包含一个字符串元素的列表要解决您的问题,请将上面的行转换为:
而final将成为预期的词典:
相关问题 更多 >
编程相关推荐