【发布时间】:2019-11-26 15:25:04
【问题描述】:
我在这里与某人合作,他通过使用列表压缩来填充字典来帮助我解决问题。我有一个名为 bar 的输出,其中包含开盘高低和收盘数据,我只想将它们分配给字典。 数据示例:
Timestamp: 2019-07-17 10:58:00+00:00
Open: 1.8877
High: 1.8878
Low: 1.8871
Close: 1.8878
我们通过以下代码做到了:
def append(self, bar):
symbols = symbol = ['CLE', 'RBE']
bar_keys = key = ['Open', 'High', 'Low', 'Close']
self.newest_bar = {key: getattr(bar, key) for key in bar_keys}
所以它基本上会为列表 bar_keys 中的每个值获取 bar.Open、bar.Close 等。
我实际上是在尝试在此之上添加第二个符号并尝试使用相同的确切语法,但我不确定它为什么不起作用。
我现在只想获取 bar.Close 每个符号(CLE、RBE)的值并将它们添加到我的字典中,但我不断得到不可散列的类型。上面的工作版本和我下面的版本有什么区别?
symbols = symbol = ['CLE', 'RBE']
self.closes = {key: getattr(bar, 'Close') for symbol in symbols}
这是完整的代码 sn-p 以及他的工作版本和我添加的内容:
def append(self, bar):
symbols = symbol = ['CLE', 'RBE']
bar_keys = key = ['Open', 'High', 'Low', 'Close']
self.newest_bar = {key: getattr(bar, key) for key in bar_keys}
self.bars[bar.Timestamp] = self.newest_bar
self.closes = {key: getattr(bar, 'Close') for symbol in symbols}
【问题讨论】:
-
Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。
-
那不是列表推导,那是字典推导。
-
你为什么还要
symbols = symbol =和bar_keys = key =?而且,在第一个代码中,您甚至没有使用symbols...
标签: python pandas list dictionary list-comprehension