将 ecoinvent 中的 activity 分配给变量并访问 activity 的属性
Assign an activity from ecoinvent to a variable and access the activity's properties
我想检索 activity 的所有输入和输出的名称(可能还有其他信息)。据我了解,这将使我能够,例如查看电力生产组合由哪些单独输入组成。
首先,我通过 ecoinvent_db = bw.Database('ecoinvent 3.7.1_cutoff')
select 数据库并搜索可能与我的 objective 相关的活动。
输入:
ecoinvent_db.search('electricity production mix')
输出:
['electricity, high voltage, production mix' (kilowatt hour, CH, None),
'electricity, high voltage, production mix' (kilowatt hour, AU, None),
'electricity, high voltage, production mix' (kilowatt hour, TZ, None),
'electricity, high voltage, production mix' (kilowatt hour, TH, None),
'electricity, high voltage, production mix' (kilowatt hour, MT, None),
'electricity, high voltage, production mix' (kilowatt hour, RU, None),
'electricity, high voltage, production mix' (kilowatt hour, PE, None),
'electricity, high voltage, production mix' (kilowatt hour, IR, None),
'electricity, high voltage, production mix' (kilowatt hour, MX, None),
'electricity, high voltage, production mix' (kilowatt hour, JP, None),
'electricity, high voltage, production mix' (kilowatt hour, CL, None),
'electricity, high voltage, production mix' (kilowatt hour, CY, None),
'electricity, high voltage, production mix' (kilowatt hour, MY, None),
'electricity, high voltage, production mix' (kilowatt hour, UA, None),
'electricity, high voltage, production mix' (kilowatt hour, IS, None),
'electricity, high voltage, production mix' (kilowatt hour, TW, None),
'electricity, high voltage, production mix' (kilowatt hour, KR, None),
'electricity, high voltage, production mix' (kilowatt hour, SA, None),
'electricity, high voltage, production mix' (kilowatt hour, ID, None),
'electricity, high voltage, production mix' (kilowatt hour, ZA, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-YK, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-ON, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-PE, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-NF, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-NS, None)]
接下来,我想将这些活动之一分配给一个变量(稍后我可以在循环中执行此操作)。在其中一个示例笔记本中,activity 通过 database.get()
分配给变量。但是在笔记本中给出的示例中,activity 的名称只是一个字符串。在 ecoinvent 的情况下,活动的名称不是唯一的并且 db.search(str)
returns 给定的活动为 'activity_name' (unit, region, None)'
.
如果我使用 ecoinvent_db.get()
,然后使用上面括号中的输出之一,我会收到 ActivityDatasetDoesNotExist
错误。
我可以 select 随机 activity 并通过以下方式打印姓名:
activity = bw.Database("ecoinvent 3.7.1_cutoff").random()
for exchange in activity.exchanges():
print(exchange)
但是,activity_exchanges = list(activity.exchanges())
只会产生以下结果。
如何将 ecoinvent 中的 activity 分配给变量,并访问或添加其属性(例如名称、交易所等)到列表或字典?
假设您分配给 ecoinvent 的名称是
MY_DB_NAME == 'ecoinvent 3.7.1_cutoff'
我建议您循环浏览活动以找到您想要的内容,而不是使用搜索。例如这个 returns 一个 activity 对象:
elec_example = next(act for act in bw2data.Database(MY_DB_NAME) if act['name'] == 'electricity, high voltage, production mix')
从您的列表中选择一个值也可以。
activity 的键是一个元组,其中包含数据库名称和唯一(在数据库内)代码。您可以将 get_activity
函数与 activity 的键一起使用,或者使用数据库的 get
方法来检索 activity (如果您知道键或代码) .
assert bw2data.get_activity(elec_example.key) == elec_example
assert bw2data.Database(MY_DB_NAME).get(elec_example['code']) == elec_example
您可以访问与 activity 对象关联的不同数据。例如elec_example['name']
方法 .exchanges() returns 一个可迭代的。您可以简单地使用 list(elec_example.exchanges())
获得交换列表,或者使用 for 循环遍历交换。
我想检索 activity 的所有输入和输出的名称(可能还有其他信息)。据我了解,这将使我能够,例如查看电力生产组合由哪些单独输入组成。
首先,我通过 ecoinvent_db = bw.Database('ecoinvent 3.7.1_cutoff')
select 数据库并搜索可能与我的 objective 相关的活动。
输入:
ecoinvent_db.search('electricity production mix')
输出:
['electricity, high voltage, production mix' (kilowatt hour, CH, None),
'electricity, high voltage, production mix' (kilowatt hour, AU, None),
'electricity, high voltage, production mix' (kilowatt hour, TZ, None),
'electricity, high voltage, production mix' (kilowatt hour, TH, None),
'electricity, high voltage, production mix' (kilowatt hour, MT, None),
'electricity, high voltage, production mix' (kilowatt hour, RU, None),
'electricity, high voltage, production mix' (kilowatt hour, PE, None),
'electricity, high voltage, production mix' (kilowatt hour, IR, None),
'electricity, high voltage, production mix' (kilowatt hour, MX, None),
'electricity, high voltage, production mix' (kilowatt hour, JP, None),
'electricity, high voltage, production mix' (kilowatt hour, CL, None),
'electricity, high voltage, production mix' (kilowatt hour, CY, None),
'electricity, high voltage, production mix' (kilowatt hour, MY, None),
'electricity, high voltage, production mix' (kilowatt hour, UA, None),
'electricity, high voltage, production mix' (kilowatt hour, IS, None),
'electricity, high voltage, production mix' (kilowatt hour, TW, None),
'electricity, high voltage, production mix' (kilowatt hour, KR, None),
'electricity, high voltage, production mix' (kilowatt hour, SA, None),
'electricity, high voltage, production mix' (kilowatt hour, ID, None),
'electricity, high voltage, production mix' (kilowatt hour, ZA, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-YK, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-ON, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-PE, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-NF, None),
'electricity, high voltage, production mix' (kilowatt hour, CA-NS, None)]
接下来,我想将这些活动之一分配给一个变量(稍后我可以在循环中执行此操作)。在其中一个示例笔记本中,activity 通过 database.get()
分配给变量。但是在笔记本中给出的示例中,activity 的名称只是一个字符串。在 ecoinvent 的情况下,活动的名称不是唯一的并且 db.search(str)
returns 给定的活动为 'activity_name' (unit, region, None)'
.
如果我使用 ecoinvent_db.get()
,然后使用上面括号中的输出之一,我会收到 ActivityDatasetDoesNotExist
错误。
我可以 select 随机 activity 并通过以下方式打印姓名:
activity = bw.Database("ecoinvent 3.7.1_cutoff").random()
for exchange in activity.exchanges():
print(exchange)
但是,activity_exchanges = list(activity.exchanges())
只会产生以下结果。
如何将 ecoinvent 中的 activity 分配给变量,并访问或添加其属性(例如名称、交易所等)到列表或字典?
假设您分配给 ecoinvent 的名称是
MY_DB_NAME == 'ecoinvent 3.7.1_cutoff'
我建议您循环浏览活动以找到您想要的内容,而不是使用搜索。例如这个 returns 一个 activity 对象:
elec_example = next(act for act in bw2data.Database(MY_DB_NAME) if act['name'] == 'electricity, high voltage, production mix')
从您的列表中选择一个值也可以。
activity 的键是一个元组,其中包含数据库名称和唯一(在数据库内)代码。您可以将 get_activity
函数与 activity 的键一起使用,或者使用数据库的 get
方法来检索 activity (如果您知道键或代码) .
assert bw2data.get_activity(elec_example.key) == elec_example
assert bw2data.Database(MY_DB_NAME).get(elec_example['code']) == elec_example
您可以访问与 activity 对象关联的不同数据。例如elec_example['name']
方法 .exchanges() returns 一个可迭代的。您可以简单地使用 list(elec_example.exchanges())
获得交换列表,或者使用 for 循环遍历交换。