JSONデータによるグループ化

7499 ワード

JSONデータ
[
  {
    "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'}]