【发布时间】:2014-03-28 13:21:34
【问题描述】:
在 Python 2.7 中工作,我有一个包含一些报价数据的嵌套字典,我想从中生成一个成功构造的报价列表。目前,我是这样做的:
result = []
for nameStr, nameData in dataTbl.iteritems():
for valueDate, record in nameData.iteritems():
quote = histRecordToQuote(securitiesDict = securitiesDict,
nameStr = nameStr,
valueDate = valueDate,
record = record)
if quote:
result.append(quote)
有没有更 Pythonic 的方式来做到这一点?我有一种预感,我们可以通过列表理解做得更快或更清晰。函数histRecordToQuote() 在由于数据错误无法构造报价时返回None。你可以建议一个不同的签名,我很乐意重写它以获得更清晰/更快的代码。
非常感谢。
编辑
字典结构示例:
{'IBM': {'20140215':2.53, '20140216':2.55},
'MSFT': {'20140213':2.45, '20140216':0.},
'AMZN': {'20140212':0., '20140214':2.59}}
参数securitiesDict是外部的,在histRecordToQuote()内部构造Quote类时需要它。
histRecordToQuote() 的输出将为 0 价格记录返回 None,并从其余部分构造有效的 Quote。
Quote('IBM', '20140215', 2.53)
Quote('IBM', '20140216', 2.55)
Quote('MSFT', '20140213', 2.45)
None
Quote('AMZN', '20140214', 2.59)
None
我的最终输出需要是有效引号列表:
[Quote('IBM', '20140215', 2.53),
Quote('IBM', '20140216', 2.55),
Quote('MSFT', '20140213', 2.45),
Quote('AMZN', '20140214', 2.59)]
【问题讨论】:
-
你能提供一个清晰的dict结构例子吗?
-
和想要的输出?
-
@Totem 请看更新
-
@JDavidSmith 我输入了预期的函数输出以及我想要的最终输出。谢谢。
标签: python python-2.7 dictionary iteration list-comprehension