gpt4 book ai didi

python - 将值分配给嵌套字典错误

转载 作者:行者123 更新时间:2023-12-01 07:34:06 25 4
gpt4 key购买 nike

我收到的数据包含时间戳以及开盘价、最高价、最低价和收盘价。

我试图将其组织在字典中,以便在每个时间戳处,都有一个键保存相应的开盘价、最高价、最低价和收盘价。

到目前为止我做了什么:

我首先初始化一个名为 newest_bar 的空字典。

然后,每次添加新柱时,我首先设置一个名为 'Timestamp' 的新键,其中将包含该新柱的时间。然后,我运行一个 for 循环,在该时间戳下嵌套相应的开盘价、最高价、最低价和收盘价。

这是我的尝试:

def append(self, bar):
key = ['Open', 'High', 'Low', 'Close']
values = [bar.Open, bar.High, bar.Low, bar.Close]
self.newest_bar['TimeStamp'] = bar.Timestamp
for i, item in enumerate(key):
self.newest_bar['TimeStamp'][item] = values[i]

print(self.newest_bar)

但是我不断收到此错误,这告诉我我可能没有正确执行按键分配。

TypeError: 'pywintypes.datetime' object does not support item assignment

数据示例:

Timestamp: 2019-07-17 10:58:00+00:00
Open: 1.8877
High: 1.8878
Low: 1.8871
Close: 1.8878

输出示例

{'TimeStamp': '2019-07-17 10:58:00+00:00' 
{'Open":1.8877, 'High':1.8878, 'Low':1.8871, 'Close':1.8878}

最佳答案

从名称来看,例如 appendnewest_bar,您正在尝试将条形信息放入按时间戳键入的字典中。没有理由使用名为 Timestamp 的键:对柱信息的访问是由时间戳本身提供的。因此,您可能需要维护一个字典,我们将其称为 self 中的 bars。为了方便起见,您可能希望获得时间戳信息的唯一位置是 self.newest_bar,以便让用户知道您上次更新的时间。因此,在每个栏的键中包含 Timestamp 没有什么坏处:

bar_keys = ['Timestamp', 'Open', 'High', 'Low', 'Cloe']

...

def append(self, bar):
self.newest_bar = {key: getattr(bar, key) for key in bar_keys}
self.bars[self.newest_bar['Timestamp']] = self.newest_bar

您可以使用getattr和一个comprehension一步创建一个字典,而不是解包到一个列表,然后用循环重新打包。我还建议将键列表提取到类主体中,否则每次调用该函数时都会生成一个新列表。

关于python - 将值分配给嵌套字典错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com