Python 词典理解语法理解

Python 词典理解语法理解,python,pandas,list,dictionary,list-comprehension,Python,Pandas,List,Dictionary,List Comprehension,我和这里的某个人一起工作,他通过使用列表压缩来填充字典,帮助我解决了一个问题。我有一个名为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',

我和这里的某个人一起工作,他通过使用列表压缩来填充字典,帮助我解决了一个问题。我有一个名为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\u键的bar.Open、bar.Close等

我基本上是想在上面加上第二个符号,并尝试使用相同的语法,但我不知道为什么它不起作用

我只想现在就拿这个吧。关闭每个符号的值(CLE,RBE)并将它们添加到我的字典中,但我一直得到不可损坏的类型。上面的工作版本和下面的我的版本有什么区别

symbols = symbol = ['CLE', 'RBE']
self.closes = {key: getattr(bar, 'Close') for symbol in symbols}
这是他的工作版本和我添加的全部代码片段:

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}

键是一个列表。你不能用一个列表键入一个dict。在另一个代码中,使用dict理解内部的

停止为一堆不同的事情使用相同的变量名

def append(self, bar):
    symbols = ['CLE', 'RBE']
    bar_keys = ['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 = {symbol: getattr(bar, 'Close') for symbol in symbols}

键是一个列表。你不能用一个列表键入一个dict。在另一个代码中,使用dict理解内部的

停止为一堆不同的事情使用相同的变量名

def append(self, bar):
    symbols = ['CLE', 'RBE']
    bar_keys = ['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 = {symbol: getattr(bar, 'Close') for symbol in symbols}

适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。这不是列表理解,而是字典理解。您为什么还要执行
symbols=symbol=
bar\u keys=key=
?而且,在第一个代码中,您甚至没有使用
符号
。。。适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。这不是列表理解,而是字典理解。您为什么还要执行
symbols=symbol=
bar\u keys=key=
?而且,在第一个代码中,您甚至没有使用
符号
…ohh-我认为工作示例中的“键”需要定义字典的键。在工作示例中,
由dict comprehension使用
bar_keys
中的单个对象设置。如果您想在新代码中再次使用这些键值,您必须使用循环或理解来迭代
bar_键。
。ohh-我认为工作示例中的“键”需要定义字典的键。在工作示例中,
通过dict comprehension从
bar\u键
设置单个对象。如果您想在新代码中再次使用这些键值,您必须使用循环或理解来迭代
bar\u键。