在有序字典上迭代会导致:“float”对象没有属性“items”

2024-10-03 04:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下功能,可以打印出有序字典:

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有缺陷吗?提前谢谢


Tags: the方法innumberforvaluedefitems