Python:将列添加到字典但不按正确顺序映射

时间:2017-01-11 13:52:35

标签: python dictionary

我正在添加从Flask sqlalchemy核心查询的数据。缺少所有数据的列。所以我用以下代码添加它:有很多列,但我只是简化为几个。

col = ['index','Stock','Name','MACD','STOCH','RSI']
a = call.fetchall()
print a
>>>a=[(0, 'MAGNUM', 'MAGNUM BERHAD', 'SS', 'S', 'H1'),(1,'ABC','ABC BH','SS','S','H2')]. 
dicts = [dict(zip(col, d)) for d in a]
print dicts
>>>[{'MACD': 'JAC', 'RSI': 'SS', 'STOCH': 'SB', 'Name': 'H',Stock':'H'}]

dicts输出跳过第一个结果,即索引0.它转到索引1.此外,索引没有映射到dicts。 如何使它以正确的顺序映射所有内容?

1 个答案:

答案 0 :(得分:3)

您无法预先假定字典中的顺序。

既然你改变了问题,我改变了答案。 .content { background-color: #e6e6e6; border: 1px solid #bcbcbc; /*height: 650px;*/ /*Remove this*/ margin: 0 auto 30px;/*Change this*/ overflow: hidden;/*Add this*/ position: relative; /*top: -100px;*//*Remove this*/ width: 650px; } .grid { width: 600px; /*height: 1000px;*/ /*Remove this*/ margin: 0 auto; padding-top: 30px; } 是一个元组列表,因此以下内容可以正常工作:

a

它创建了一个包含from collections import OrderedDict col = ['index','Stock','Name','MACD','STOCH','RSI'] a=[(0, 'MAGNUM', 'MAGNUM BERHAD', 'SS', 'S', 'H1'),(1,'ABC','ABC BH','SS','S','H2')] d = [OrderedDict(zip(col,t)) for t in a] print (d) 元素的列表推导,这些元素是通过将OrderedDict列表与col元组列表的每个元素一起压缩而构建的。

结果:

a