【发布时间】:2018-11-21 11:00:50
【问题描述】:
我在尝试索引 python dict 时遇到语法错误:
(Pdb) o_model.flows
{(<oemof.solph.network.Bus object at 0x7f3e9c6b3ea8>, <oemof.solph.network.Transformer object at 0x7f3e9c52ce08>): <oemof.solph.network.Flow object at 0x7f3e9c50d5f8>}
这里是字典的关键:
(Pdb) o_model.flows.keys()
dict_keys([(<oemof.solph.network.Bus object at 0x7f3e9c6b3ea8>, <oemof.solph.network.Transformer object at 0x7f3e9c52ce08>)])
所以我假设 dict 的键 是 (<oemof.solph.network.Bus object at 0x7f3e9c6b3ea8>, <oemof.solph.network.Transformer object at 0x7f3e9c52ce08>)
问题是我在尝试使用上面提到的键索引o_model.flows 时遇到语法错误。
通常我希望通过获取 dict 的值 (<oemof.solph.network.Flow object at 0x7f3e9c50d5f8>),但我得到了一个语法错误:
(Pdb) o_model.flows[(<oemof.solph.network.Bus object at 0x7f3e9c6b3ea8>, <oemof.solph.network.Transformer object at 0x7f3e9c52ce08>)]
*** SyntaxError: invalid syntax
我做错了什么?
一些额外的:
(Pdb) type(o_model.flows)
<class 'dict'>
【问题讨论】:
-
这不是字典的键,只是一个表示!!!!!!
-
那我怎么拿到钥匙呢?
-
我不知道
oemof.solph.network.Bus object是什么(大概是你正在使用的某个库中定义的一个类)——但它绝对不同于字典 -
首先,只需检查字典中的值 - 使用
print函数。我想你会发现,那个值不是字典键...... -
您可以在不需要知道其键的情况下迭代 dict,请参阅
values(),items()。但是这个字典看起来真的很痛苦,给我们看看生成o_model.flows的代码。它的键不是字符串,它们是对象列表。处理这些键会很痛苦。因此,如果可能,请不要那样构建它。
标签: python dictionary indexing