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

如何为pint库的派生维度计量值设置默认自动转换单位

解决方案

可以通过配置pint派生维度的首选默认单位实现需求,无需修改基础维度定义,也不会影响其他维度的单位逻辑。

步骤1:修改单位定义文件units.txt

在派生维度的定义行后添加=> 目标单位,指定该维度的默认展示单位,修改后的配置如下:

# units.txt

# Base dimensions and their units
hour = [time] = h = hr
megawatthour = [energy] = MWh
euro = [currency] = Eur = €

# Derived dimensions and their units
[power] = [energy] / [time] => MW
megawatt = megawatthour / hour = MW
[price] = [currency] / [energy] => Eur/MWh
euro_per_MWh = euro / megawatthour  = Eur/MWh

步骤2:开启自动转换到首选单位的开关

初始化UnitRegistry后开启autoconvert_to_preferred配置,完整测试代码如下:

import pint

ureg = pint.UnitRegistry("units.txt")
# 开启自动转换为指定维度的首选单位
ureg.autoconvert_to_preferred = True
ureg.default_format = ".0f~P"

energy = 100 * ureg.MWh
time = 4 * ureg.h
revenue = 4000 * ureg.euro

price = revenue / energy
power = energy / time

print(energy, time, revenue, price, power) 
# 输出结果:100 MWh 4 h 4000 Eur 40 Eur/MWh 25 MW

兼容说明

如果你使用的pint版本低于0.18,不支持=>指定首选单位的语法,可以替换步骤1的配置,直接在代码中注册维度默认单位:

ureg = pint.UnitRegistry("units.txt")
ureg.define('@default unit for [power] is MW')
ureg.define('@default unit for [price] is Eur/MWh')
ureg.autoconvert_to_preferred = True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:06:04