迭代有序字典导致:'float' 对象没有属性 'items'
Iterating on an Ordered Dictionary results in: 'float' object has no attribute 'items'
我有以下打印有序字典的函数:
def printSQN(analyzer):
sqn = round(analyzer.sqn, 2)
print(f'The System Quality Number (SQN) is: {sqn}')
输出如下所示:
OrderedDict([('sharperatio', 0.19697863771541763)])
我想要'unpack'这个有序的字典并且只打印出值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
库中的文档说:
"The Analyzer base class creates a self.rets
(of type collections.OrderedDict
) member attribute to return the analysis. This is done in the method create_analysis which can be overriden by subclasses if creating custom analyzers."
看来我的方法是文档中建议的方法:https://docs.python.org/3/library/stdtypes.html#dict.items
有人看到我的 for loop
哪里有问题吗?提前致谢!
以下解决方案有效:
list(the_strategy.analyzers._sharpe.get_analysis().values())[0]
我有以下打印有序字典的函数:
def printSQN(analyzer):
sqn = round(analyzer.sqn, 2)
print(f'The System Quality Number (SQN) is: {sqn}')
输出如下所示:
OrderedDict([('sharperatio', 0.19697863771541763)])
我想要'unpack'这个有序的字典并且只打印出值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
库中的文档说:
"The Analyzer base class creates a self.rets
(of type collections.OrderedDict
) member attribute to return the analysis. This is done in the method create_analysis which can be overriden by subclasses if creating custom analyzers."
看来我的方法是文档中建议的方法:https://docs.python.org/3/library/stdtypes.html#dict.items
有人看到我的 for loop
哪里有问题吗?提前致谢!
以下解决方案有效:
list(the_strategy.analyzers._sharpe.get_analysis().values())[0]