需求如下: 两组数据: 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
freakxx 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 这个确实简化了不少 另外结合求交集
|