[英]Create json file from input matrix by grouping rows
給定下面的矩陣,我想創建和json輸出,該輸出將遍歷矩陣行並在組(col2)重復的情況下追加項目(col 1):
matrix = [
['JAN', '1', 'abc'],
['FEB', '7', 'xyz'],
['FEB', '4', 'abc'],
['MAR', '3', 'xyz'],
['DEC','12', 'xyz']
]
如何創建一個輸出/ JSON文件:
{
"month": ["JAN","FEB","FEB","MAR","DEC"],
"items": [
{ "group":"abc",
"data":[1,4]
},
{ "group":"xyz",
"data":[7,3,12]
}
]
}
我已經嘗試過轉置矩陣/列並構造一個字典,在其中將項目附加到for循環中,但是我丟失了一些東西,而且變得混亂了。 這應該是一個簡單的方法。
該程序:
from itertools import groupby
import json
matrix = [
['JAN', '1', 'abc'],
['FEB', '7', 'xyz'],
['FEB', '4', 'abc'],
['MAR', '3', 'xyz'],
['DEC', '12', 'xyz']
]
months = [x[0] for x in matrix]
items = [[x[2], int(x[1])] for x in matrix]
items = sorted(items, key=lambda x: x[0])
items = groupby(items, lambda x: x[0])
items = [{"group": k, "data": [x[1] for x in g]} for k, g in items]
result = {
"month": months,
"items": items
}
print (json.dumps(result, sort_keys=True, indent=4, separators=(',', ': ')))
產生以下輸出:
{
"items": [
{
"data": [
1,
4
],
"group": "abc"
},
{
"data": [
7,
3,
12
],
"group": "xyz"
}
],
"month": [
"JAN",
"FEB",
"FEB",
"MAR",
"DEC"
]
}
最好使用json
模塊,但是您可以在json
后編寫標准文件:
with open('data.json', 'w') as data:
data.write(str(my_dict))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.