您可以使用Python的itertools.groupby
函数和json
模块来按组创建转换后的JSON输出。以下是一个示例代码:
import itertools
import json
def group_by_and_convert_to_json(data, group_by_key, convert_keys):
grouped_data = itertools.groupby(data, key=lambda x: x[group_by_key])
output = []
for key, group in grouped_data:
group_output = {}
for item in group:
for convert_key in convert_keys:
if convert_key in item:
group_output.setdefault(convert_key, []).append(item[convert_key])
output.append({group_by_key: key, 'data': group_output})
return json.dumps(output)
# 示例数据
data = [
{'group': 'A', 'name': 'John', 'age': 25},
{'group': 'A', 'name': 'Alice', 'age': 30},
{'group': 'B', 'name': 'Bob', 'age': 35},
{'group': 'B', 'name': 'Charlie', 'age': 40},
{'group': 'C', 'name': 'David', 'age': 45}
]
# 按组 'group' 并转换 'name' 和 'age' 到JSON输出
converted_json = group_by_and_convert_to_json(data, 'group', ['name', 'age'])
print(converted_json)
运行上述代码将输出以下结果:
[{"group": "A", "data": {"name": ["John", "Alice"], "age": [25, 30]}},
{"group": "B", "data": {"name": ["Bob", "Charlie"], "age": [35, 40]}},
{"group": "C", "data": {"name": ["David"], "age": [45]}}]
在示例中,我们定义了一个group_by_and_convert_to_json
函数,它接受三个参数:data
(原始数据列表),group_by_key
(用于分组的键),convert_keys
(需要转换的键列表)。
函数首先使用itertools.groupby
根据指定的group_by_key
将数据分组。然后,它遍历每个分组并构建转换后的输出。在每个分组中,我们使用setdefault
方法将需要转换的键添加到输出的字典中,并将对应的值附加到列表中。
最后,我们将输出列表转换为JSON格式的字符串并打印出来。
上一篇:按组别,创建新的时长列。