簡體   English   中英

通過對行進行分組從輸入矩陣創建json文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM