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

如何让attrs对list中每个元素执行float转换而非传入整个列表?

解决attrs列表元素批量转换的问题

你当前的报错是因为直接把整个列表传入float函数,而float只能处理单个字符串或数字。attrs内置了converters.each_item()工具,不用自定义转换器就能实现对列表每个元素的转换。

修正后的代码如下:

import attrs
from attrs import converters

@attrs.define(kw_only=True)
class A:
    values: list[float] = attrs.field(converter=converters.each_item(float))

# 测试代码
instance = A(values=["1.1", "2.2", "3.3"])
print(instance.values)  # 输出: [1.1, 2.2, 3.3]

converters.each_item(float)会生成一个专用转换器,它会遍历输入的可迭代对象,将每个元素逐个传入float函数完成转换,最后返回转换后的列表,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:31:08