
其中第一行为:键名,其他行为键值.为空部分返回None。输出如下格式
[{'键名1':'键值11','键名2':'键值21','键名3':'键值31','键名4':'键值41'},{'键名1':'键值12','键名2':'键值22','键名3':'键值32','键名4':'键值42'},{'键名1':'键值13','键名2':'键值23','键名3':'键值33','键名4'none'}]
目前我这边使用魔法指令写出来对应的命令,想请群里的各位老师看下是否其它更简单的方式,谢谢!
魔法指令代码
from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def convert_nested_list_to_dict_list(nested_list):
"""
title: 嵌套列表转字典列表
description: 将嵌套列表格式的数据转换为字典列表,第一行作为键名,后续行作为对应的值,空值转换为None。
inputs:
- nested_list (list): 嵌套列表数据,第一个子列表为表头,eg: "[['键名1', '键名2'], ['键值11', '']]"
outputs:
- result (list): 字典列表,每个字典代表一行数据,空值转为None,eg: "[{'键名1': '键值11', '键名2': None}]"
"""
# 检查输入是否为列表
if not isinstance(nested_list, list):
raise ValueError("输入必须是嵌套列表")
if len(nested_list) < 2:
raise ValueError("输入必须包含至少两行数据(表头和数据行)")
# 获取表头
headers = nested_list[0]
# 创建结果列表
result = []
# 处理每一行数据
for i in range(1, len(nested_list)):
row_data = nested_list[i]
row_dict = {}
# 为每个单元格创建键值对
for j in range(len(headers)):
# 检查索引是否在范围内以及值是否为空
if j < len(row_data) and row_data[j] not in ('', None):
row_dict[headers[j]] = row_data[j]
else:
row_dict[headers[j]] = None
result.append(row_dict)
return result