文章内容
2018/10/22 18:10:10,作 者: 黄兵
python Dictionary 附加相关问题
最近需要父子查询,使用的是python 中的字典(Dictonary
),形如:{'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}}
,需要附加字符串,使用update
无法实现,需要研究其他方法。
以下是未成品源代码:
@manage.route('/ajax_get_material', methods=['GET', 'POST']) @login_required def ajax_get_material(): # get material classification id global get_id get_id = request.values.get('get_id', 0) # if data is None,get default data is first data. if get_id is None: get_id = MaterialClassification.query.order_by(MaterialClassification.classification_since).first().id get_catalog = ClassificationCatalog.query.filter_by(classification_id=get_id).first() global item_str get_material_item = MaterialItem.query.filter_by(i_catalog_id=get_catalog.id) # {'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}} dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name,'items': {'id': get_material_item.i_id, 'item_name': get_material_item.i_name}} # TODO:Assemble json data. for item in get_material_item: item_str = {'id': item.i_id, 'item_name': item.i_name} dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name, 'items': {item_str}} return jsonify()
研究一下能否实现,同时需要注意键不能相同的问题。
2018年10月23日更新:
研究了一上午终于把问题给解决了,最后代码如下:
@manage.route('/ajax_get_material', methods=['GET', 'POST']) @login_required def ajax_get_material(): # get material classification id global get_id get_id = request.values.get('get_id', 0) # if data is None,get default data is first data. if get_id is None: get_id = MaterialClassification.query.order_by(MaterialClassification.classification_since).first().id get_catalog = ClassificationCatalog.query.filter_by(classification_id=get_id).first() get_material_item = MaterialItem.query.filter_by(i_catalog_id=get_catalog.id) # {'id':1,'name':x,'item':{'id',1,'name':x,'id':2,'name':y,...}} dict_item = {'id': get_catalog.id, 'name': get_catalog.catalog_name} # TODO:Assemble json data. for item in get_material_item: dict_item.setdefault('item', []).append({'id': item.i_id, 'item_name': item.i_name}) print(dict_item) return jsonify(dict_item)
输入结果:
{'id': 5, 'name': '黑色及有色金属', 'item': [{'id': 2, 'item_name': '钢丝'}, {'id': 3, 'item_name': '钢丝绳'}, {'id': 4, 'item_name': '圆钢'}, {'id': 5, 'item_name': '方钢'}, {'id': 6, 'item_name': '钢筋'}]}
输入json之后的结果:
正好满足上面的要求,自此问题解决。
有什么问题欢迎下面留言。
参考资料:字典中的键映射多个值
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - python Dictionary 附加相关问题
评论列表