如何在python中将列表转换为字典?

时间:2017-04-26 11:05:43

标签: python

我从数据库中获取值,我想将该值转换为字典。要按照以下方式完成取消

[dict((query.description[i][0], value) for i, value in enumerate(row)) for row in query.fetchall()]

我的输出为

[{'defrosting': 32.0, 'temperature': 42.0, 'timestamp': u'2017-04-25T11:30:15.207', 'hotwater': 3.0, 'humidity': 32.0, 'tds': 34.0, 'coldwater': 43.0}] 

我想转换成这种格式

{'defrosting': 32.0, 'temperature': 42.0, 'timestamp': u'2017-04-25T11:30:15.207', 'hotwater': 3.0, 'humidity': 32.0, 'tds': 34.0, 'coldwater': 43.0}

2 个答案:

答案 0 :(得分:2)

如果您只需要一个结果,任何不使用query.fetchone()的理由,它就会避免获得所有结果并丢弃除第一个之外的所有结果:

{query.description[i][0]: value for i, value in enumerate(query.fetchone())}

答案 1 :(得分:0)

您正在为查询结果的每一行创建一个字典。它总是只有一个结果,或者你只对第一个结果感兴趣吗?然后选择第一个元素,正如Jean-FrançoisFabre在评论中所说:

[dict((query.description[i][0], value) for i, value in enumerate(row))
    for row in query.fetchall()
][0]

这些行是否包含免费信息(在这种情况下不太可能)?然后从中制作一个字典:

dict(
    (query.description[i][0], value)
    for row in query.fetchall()
    for i, value in enumerate(row)
    )

我个人觉得字典理解比dict构造函数更具可读性:

{
 query.description[i][0]: value
 for row in query.fetchall()
 for i, value in enumerate(row)
}