JSON数据进行groupby分组

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数据是从一个前端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'}]
发布了181 篇原创文章 · 获赞 82 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/lpwmm/article/details/102736172