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

Python如何拆分对象列表 提取x/y/z值生成三个独立列表

Python 拆分字典(字符串)列表为独立的x/y/z值列表

首先注意:你给出的原始列表中每个元素是字典格式的字符串,不是原生Python字典对象,直接按键取值会触发类型错误,需要先做格式转换再提取值。


实现步骤

  1. 安全转换字符串为字典:使用标准库ast.literal_eval做格式转换,相比eval()不会执行字符串内的恶意代码,是处理字面量字符串的最优方案。
  2. 遍历转换后的字典列表,按key分别提取值存入对应列表。

完整可运行代码

import ast

# 替换为你实际的244个元素的原始列表
raw_data = [
    "{'x':-9.717017,'y':-14.0228567,'z':145.401215}",
    # ... 其余242个元素
    "{'x':-6.44751644,'y':-65.20397,'z':-67.7079239}"
]

# 批量将字符串转为字典对象
dict_data = [ast.literal_eval(item) for item in raw_data]

# 分别提取三个维度的数值
x_values = [item['x'] for item in dict_data]
y_values = [item['y'] for item in dict_data]
z_values = [item['z'] for item in dict_data]

执行后你会得到三个独立列表,长度和原始列表一致,均为244,可以用以下代码验证:

print(len(x_values), len(y_values), len(z_values))
# 预期输出: 244 244 244

特殊场景简化写法

  • 如果你的原始列表元素本身就是原生字典(不是带引号的字符串),可以跳过转换步骤,直接提取值:
# 仅适用于元素为dict类型的列表
x_values = [d['x'] for d in raw_data]
y_values = [d['y'] for d in raw_data]
z_values = [d['z'] for d in raw_data]
  • 如果想要更简洁的拆包写法,可以用zip实现一行赋值:
x_values, y_values, z_values = (list(seq) for seq in zip(*[(d['x'], d['y'], d['z']) for d in dict_data]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:27:25