简单的问题,我已经解决了..但是python有一百万种方法来解决同样的问题.我不想要最简洁的解决方案,我只想要一个比以下更有意义的解决方案:
# sql query happens above, returns multiple rows
rows = cursor.fetchall()
cursor.close()
cntdict = {}
for row in rows:
a, b, c = row[0], row[1], row[2]
cntdict = {
a : { "b":b, "c":c }
}
print dict(cntdict)
Run Code Online (Sandbox Code Playgroud)
注意,a总是独一无二的.我想要一个从结果集创建的字典.稍后在我的脚本中,我需要在字典中为每个发生的行引用值.我正在尝试通过使键成为var a中的值来索引字典.应该指向另一个带有两个键/值对的字典来描述...除非有更聪明/更短的方法来做到这一点.
Nad*_*mli 12
您可以使用生成器表达式和字典构造函数执行相同的操作:
dict((row[0], {"b": row[1], "c": row[2]}) for row in rows)
Run Code Online (Sandbox Code Playgroud)
以下是行动中的代码:
>>> rows = [[1, 2, 3], [4, 5, 6]]
>>> dict((row[0], {"b": row[1], "c": row[2]}) for row in rows)
{1: {'c': 3, 'b': 2}, 4: {'c': 6, 'b': 5}}
Run Code Online (Sandbox Code Playgroud)
我不记得MySQLdb是否将行作为元组列表返回,如果是这种情况,那么你可以这样做:
dict((a, {"b": b, "c": c}) for a, b, c in rows)
Run Code Online (Sandbox Code Playgroud)