JSONデータによるグループ化
7499 ワード
JSONデータ
所望の目標
上のjsonデータは、1つのフロントエンドformからjQueryのserializeArray()を使用して生成されたものであり、現在はそのキー値を
プロセス
[
{
"name": "24-tiankong",
"value": " 1"
},
{
"name": "19-tiankong",
"value": " 2"
},
{
"name": "7-duoxuan",
"value": "A"
},
{
"name": "7-duoxuan",
"value": "B"
},
{
"name": "7-duoxuan",
"value": "C"
}
]
所望の目標
上のjsonデータは、1つのフロントエンドformからjQueryのserializeArray()を使用して生成されたものであり、現在はそのキー値を
name
に基づいてグループ化して、複数の同じ名前の*-duoxuan
(実はフロントエンドCheckBoxが複数選択された結果)をうまく処理しようとしているプロセス
import json
import itertools
from operator import itemgetter
raw = r'[{"name": "24-tiankong","value": " 1"},{"name": "19-tiankong","value": " 2"},{"name": "7-duoxuan","value": "A"},{"name": "7-duoxuan","value": "B"},{"name": "7-duoxuan","value": "C"}]'
jdata = json.loads(raw)
sorted_jdata = sorted(jdata, key=itemgetter('name')) #
for key, group in itertools.groupby(sorted_jdata, key=lambda x:x['name']): # name key
print(key)
print(list(group))
#
19-tiankong
[{'name': '19-tiankong', 'value': ' 2'}]
24-tiankong
[{'name': '24-tiankong', 'value': ' 1'}]
7-duoxuan
[{'name': '7-duoxuan', 'value': 'A'}, {'name': '7-duoxuan', 'value': 'B'}, {'name': '7-duoxuan', 'value': 'C'}]