我一直在努力解决这个问题,但我做不对:( 我在 Django 中查询 mySQL 数据库,结果返回为数组中的元组。请参阅下面的虚拟数据;
query_results = [
(500, datetime.date(2017, 1, 1)),
(302, datetime.date(2017, 1, 2)),
(550, datetime.date(2017, 1, 3)),
(180, datetime.date(2017, 1, 4)),
(645, datetime.date(2017, 1, 5)),
(465, datetime.date(2017, 1,6))
]
500、302、550 等...是我的记录。下一个元素是这些记录的日期。我想使用循环将它们附加到字典中,但我总是收到以下错误:
TypeError: list indices must be integers, not tuple.
谁能给我一些关于如何将这些附加到这样的东西中的建议:
myDict = {
"record": "",
"date": ""
}
非常感谢所有帮助!
最佳答案
您可以解压缩元组列表并将它们压缩成包含您想要的键的字典,
dict(zip(['record', 'date'], zip(*query_results)))
哪些输出
{'date': (datetime.date(2017, 1, 1),
datetime.date(2017, 1, 2),
datetime.date(2017, 1, 3),
datetime.date(2017, 1, 4),
datetime.date(2017, 1, 5),
datetime.date(2017, 1, 6)),
'record': (500, 302, 550, 180, 645, 465)}
更新
如果您希望得到一个听写列表,您可以直接使用列表理解。
[dict(record=record, date=date) for record, date in query_results]
哪些输出
[{'date': datetime.date(2017, 1, 1), 'record': 500},
{'date': datetime.date(2017, 1, 2), 'record': 302},
{'date': datetime.date(2017, 1, 3), 'record': 550},
{'date': datetime.date(2017, 1, 4), 'record': 180},
{'date': datetime.date(2017, 1, 5), 'record': 645},
{'date': datetime.date(2017, 1, 6), 'record': 465}]
关于python - 将数组内的元组转换为Python中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927447/