Python append和列表解析类型转换问题,pythonappend,问题:将数据库中查出的数
Python append和列表解析类型转换问题,pythonappend,问题:将数据库中查出的数
问题:将数据库中查出的数据(列表中包含元组)转换为列表中字典。
原数据结构,从数据库查出:
cur = [("t1", "d1"), ("t2", "d2")]
转换后数据结构:
[{'description': 'd1', 'title': 't1'}, {'description': 'd2', 'title': 't2'}]
方法一,使用append, 出现错误结果
pythoncur = [("t1", "d1"), ("t2", "d2")] post_dict = {}posts = []for row in cur: post_dict['title'] = row[0] post_dict['description'] = row[1] print "post_dict:",post_dict posts.append(post_dict) print "posts:",posts
方法一运行结果:
pythonpost_dict: {'description': 'd1', 'title': 't1'}posts: [{'description': 'd1', 'title': 't1'}]post_dict: {'description': 'd2', 'title': 't2'}posts: [{'description': 'd2', 'title': 't2'}, {'description': 'd2', 'title': 't2'}]
方法二,使用列表解析,结果正常
pythoncur = [("a", "a1"), ("b", "b1")] posts = []posts = [dict(title=row[0], description=row[1]) for row in cur]print "posts:",posts
方法二运行结果,正常
pythonposts: [{'description': 'd1', 'title': 't1'}, {'description': 'd2', 'title': 't2'}]
方法一的循环中,post_dict始终指向的是同一个对象。
在for循环中,使用匿名对象就可以了:
for row in cur: posts.append({'title':row[0],'description':row[1]})
方法一中,你的post_dict是一个字典对象,for循环的操作都是在更新这个对象的key和value,自始至终就这一个对象,append多少次都一样。
把字典对象放在循环内创建即可:
pythoncur = [("t1", "d1"), ("t2", "d2")] posts = []for row in cur: post_dict = {} post_dict['title'] = row[0] post_dict['description'] = row[1] print "post_dict:",post_dict posts.append(post_dict) print "posts:",posts
优先考虑列表解析,另,本例的tupel列表可以用循环解包,大致如下:
pythonIn [1]: cur = [("t1", "d1"), ("t2", "d2")]In [2]: r = [{'description': description, 'title': title} for description, title in cur]In [3]: rOut[3]: [{'description': 't1', 'title': 'd1'}, {'description': 't2', 'title': 'd2'}]
编橙之家文章,
相关内容
- Python2.7 requests库无法设置headers何解,python2.7headers,pyt
- Python什么方法可以通过邮箱发送贺卡或明信片,,请问,
- Python flask文件上传报错IOError: [Errno 13] Permission denied什么
- Python sqlalchemy报InvalidRequestError如何解决,,新手学习时,
- Sublime Text空格宽度不同是什么问题,sublimetext,问题是这
- 关于RESTful多个资源关联时返回数据实现方法是什么,
- Python字节init方法示例问题,python字节init示例,之前了解
- Python redis blpop方法不能获取队列里中数据是何原因,
- Python方法怎样获取百度地图中目标信息,python获取,目前
- Python下载七牛图片解析正常却无法下载,请牛帮看下源
评论关闭