需求如下: 两组数据: goods 数据是数据库查询出来的一组数据,
goods = Pay.query.filter_by(state=4).all() good_ids = [] for good in goods: good_ids.append(good['id'])
b 数据是其他地方获取的数据:
b = { "t_id_1": { id = "1", name = 'name1' }, "t_id_2": { id = "2", name = 'name2' }, "t_id_3": { id = "3", name = 'name3' }, "t_id_4": { id = "4", name = 'name4' }, "t_id_5": { id = "5", name = 'name5' }, "t_id_6": { id = "6", name = 'name6' }, "t_id_7": { id = "7", name = 'name7' } }
如果 goods_id 中有的 数字和 b 里面的 id 数字对应,输出 对应的 name,这个如何操作比较好啊,我的方式如下:
for item in b: for good_id in good_ids: if good_id == b[item]['id']: print(b[item]['name'])
请教下如何一次性比较后一次性输出打印结果比较好呢. 我的写法好嗦
1 TanLeDeDaNong 2019-02-25 15:28:43 +08:00 一次循环就完成的事,需要这么复杂? b 的结构太迷了,不能提出来 id:name 吗? |
2 bany 2019-02-25 15:31:57 +08:00 改用集合( set ),求一下交集? |
3 redial39 2019-02-25 15:47:38 +08:00 x = dict(b)['t_id_{}'.format(id)].get('name',None if dict(b).has_key(['t_id_{}'.format(id)]) else None 瞎写的,没审题 |
![]() | 4 metamask 2019-02-25 17:32:59 +08:00 good_ids = [good['id'] for good in goods] names = [item["name"] for item in b.values() if item["id"] in good_ids] |
5 haoxuexiaoyao OP @freakxx 这个确实简化了不少 另外结合求交集 |