我有以下功能,可以打印出有序字典:
def printSQN(analyzer):
sqn = round(analyzer.sqn, 2)
print(f'The System Quality Number (SQN) is: {sqn}')
输出如下所示:
OrderedDict([('sharperatio', 0.19697863771541763)])
我想“解包”这本订购的词典,只打印出值0.19697863771541763
为此,我尝试了以下方法:
def printSQN(analyzer):
sqn = round(analyzer.sqn, 2)
for key, value in sqn.items():
print(f'The System Quality Number (SQN) is: {value}')
但是,运行上述代码会导致以下错误:
Traceback (most recent call last):
File "backtest_02a.py", line 100, in <module>
printSQN(the_strategy.analyzers.sqn.get_analysis())
File "backtest_02a.py", line 50, in printSQN
for key, value in sqn.items():
AttributeError: 'float' object has no attribute 'items'
Backtrader
库上的文档说:
“Analyzer基类创建self.rets
(类型为collections.OrderedDict
)成员属性以返回分析。这在创建自定义分析器时可由子类重写的方法create_analysis中完成。”
似乎我的方法就是文档中建议的方法:https://docs.python.org/3/library/stdtypes.html#dict.items
有人看到我的for loop
有缺陷吗?提前谢谢
以下解决方案奏效了:
相关问题 更多 >
编程相关推荐