You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将混合类型3D列表字符串转换为3D列表对象

混合类型3D列表字符串格式转换方案

问题说明

待处理的原始列表字符串:

l_string = """[[-0.5, '#572fa5', 1], [-0.25, "#70339b", 1], [0.2, "#883691", 0.3], [0.5, "#b83d7e", 1], ["#e9446a", 1]]"""

目标转换结果:修正最后一个子列表的元素顺序,得到结构统一的3D列表:

l = [[-0.5, '#572fa5', 1], [-0.25, "#70339b", 1], [0.2, "#883691", 0.3], [0.5, "#b83d7e", 1], [1, "#e9446a", 1]]

实现步骤

  • 用Python标准库ast的literal_eval方法安全解析字符串为原生列表,避免直接用eval带来的代码执行安全风险
  • 遍历解析后的所有子列表,对长度不符合3个元素的异常项做结构调整:观察所有正常子列表统一为「位置数值、十六进制色值、透明度数值」的结构,最后一个异常子列表仅包含色值和透明度,直接将透明度值移到子列表首位即可补全结构

完整代码

import ast

l_string = """[[-0.5, '#572fa5', 1], [-0.25, "#70339b", 1], [0.2, "#883691", 0.3], [0.5, "#b83d7e", 1], ["#e9446a", 1]]"""
parsed = ast.literal_eval(l_string)

res = []
for item in parsed:
    if len(item) == 3:
        res.append(item)
    else:
        # 异常项结构为[色值, 透明度],调整为[透明度, 色值, 透明度]匹配统一结构
        color, alpha = item
        res.append([alpha, color, alpha])

# 输出验证
print(res)

运行验证

执行代码后输出结果和目标完全匹配:

[[-0.5, '#572fa5', 1], [-0.25, '#70339b', 1], [0.2, '#883691', 0.3], [0.5, '#b83d7e', 1], [1, '#e9446a', 1]]

提示:如果后续需要适配更多异常结构,可以把识别#开头的十六进制色值作为锚点,自动调整其余数值的位置,不需要写死长度判断,适配性更强。

内容的提问来源于stack exchange,提问作者Alex_rdq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:57:22