首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

数据库查询出一组数据,如何查询降低匹配次数

  •  
  •   haoxuexiaoyao · 90 天前 · 742 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求如下: 两组数据: 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'])
    

    请教下如何一次性比较后一次性输出打印结果比较好呢. 我的写法好啰嗦

    5 回复  |  直到 2019-02-26 00:08:11 +08:00
        1
    TanLeDeDaNong   90 天前
    一次循环就完成的事,需要这么复杂? b 的结构太迷了,不能提出来 id:name 吗?
        2
    bany   90 天前
    改用集合( set ),求一下交集?
        3
    redial39   90 天前
    x = dict(b)['t_id_{}'.format(id)].get('name',None) if dict(b).has_key(['t_id_{}'.format(id)]) else None

    瞎写的,没审题
        4
    freakxx   90 天前
    good_ids = [good['id'] for good in goods]

    names = [item["name"] for item in b.values() if item["id"] in good_ids]
        5
    haoxuexiaoyao   90 天前
    @freakxx 这个确实简化了不少 另外结合求交集
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1081 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1