Python如何从嵌套列表提取指定Decimal值 调用s[0]报错解决方法
嵌套列表元组结构提取Decimal值的方法
问题复现
变量定义:
from decimal import Decimal s = [(Decimal('1655275144000'),)]
直接执行s[0]返回的是单元素元组(Decimal('1655275144000'),),并非目标值,后续对该返回值做数值/字符串处理时会触发类型报错。
报错根因
s是两层嵌套结构:
- 最外层是列表类型
- 列表的第一个元素是单元素元组
- 元组的第一个元素才是存储的Decimal类型目标值
直接取s[0]仅完成了第一层取值,拿到的是元组对象,没有取到元组内部存储的实际值。
正确取值方案
- 方案1:连续索引取值(最通用)
通过两层索引逐层取值即可:
# 取列表第0位的元组,再取元组第0位的目标值 ts = s[0][0]
- 方案2:结构解包取值
利用Python的解包语法直接匹配结构取值:
# 解包列表内的元组 [(ts,)] = s
如果需要拿到原始字符串格式的时间戳,对取出的Decimal值做类型转换即可:
ts_str = str(s[0][0])
结果验证
执行取值后可通过打印确认结果:
print(ts) # 输出:1655275144000 print(type(ts)) # 输出:<class 'decimal.Decimal'> print(ts_str) # 输出:'1655275144000'
内容的提问来源于stack exchange,提问作者Aleksandra
相关产品推荐
相关产品推荐

