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

如何将ecoinvent中的活动赋值给变量并访问其输入输出等属性

错误原因说明

database.get() 方法要求传入的参数能唯一匹配一个活动,ecoinvent中存在大量同名、不同区位的活动,仅传入活动名称无法准确定位,因此会触发ActivityDatasetDoesNotExist报错。


正确赋值ecoinvent活动变量的方法

从搜索结果直接选取

search()方法返回的结果本身就是活动对象列表,不需要再调用get()方法二次查询,直接从列表中选取目标活动即可:

# 执行搜索
search_results = ecoinvent_db.search('electricity production mix')
# 先打印所有结果的序号、名称、区位,确认目标项
for idx, act in enumerate(search_results):
    print(idx, act['name'], act['location'])
# 按序号选取目标活动,比如选取序号为3的中国区域电力组合
my_activity = search_results[3]

按条件筛选

如果需要固定筛选某一类活动,可以遍历数据库匹配属性:

# 示例:筛选中国区域的高压电力生产组合
for act in ecoinvent_db:
    if act['name'] == 'electricity, high voltage, production mix' and act['location'] == 'CN':
        my_activity = act
        break

已知唯一编码时使用get

如果已经明确活动的唯一code值,可直接用get()查询:

my_activity = ecoinvent_db.get(code="目标活动的唯一code值")

存取活动属性与交换数据到列表/字典的方法

list(activity.exchanges())返回的是交换对象列表,无法直接看到属性值,需要自行提取所需字段存储:

单个活动信息存储为字典

activity_info = {
    "name": my_activity['name'],
    "location": my_activity['location'],
    "unit": my_activity['unit'],
    "code": my_activity['code'],
    "exchanges": [] # 存储所有交换项明细
}

# 提取交换项信息
for exc in my_activity.exchanges():
    exc_detail = {
        "type": exc['type'], # 区分是生产输入、环境排放还是参考产出
        "name": exc['name'],
        "amount": exc['amount'],
        "unit": exc['unit'],
        "product": exc.get('product', 'N/A')
    }
    activity_info["exchanges"].append(exc_detail)

如果要查看电力生产组合的具体构成,仅需要过滤type为technosphere的交换项即可。

批量活动信息存储为列表

all_elec_mix = []
# 遍历所有符合条件的电力组合活动
for act in ecoinvent_db:
    if act['name'] == 'electricity, high voltage, production mix':
        # 复用上面的单个活动属性、交换项提取逻辑
        activity_info = {
            "name": act['name'],
            "location": act['location'],
            "exchanges": []
        }
        for exc in act.exchanges():
            activity_info["exchanges"].append({
                "type": exc['type'],
                "name": exc['name'],
                "amount": exc['amount'],
                "unit": exc['unit']
            })
        all_elec_mix.append(activity_info)

内容的提问来源于stack exchange,提问作者Stücke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:00:03