我是Python的新手,但是我已经遍历了语法。这是我的情况:
我有两个Cursors AllImages
和AllAlbums
的实例(我从数据库获取数据,并以这种方式获取它们:
AllImages = Images.find()
AllAlbums = Albums.find()
)
[编辑:我正在使用PyMongo API]
在
AllAlbums
的每本词典中,我都有一个称为images = [1234,2234,16363]
的数字数组在
All Images
的每本词典中,都有一个名为_id
的字段这是两个字典的样子:
来自
AllAlbums
:{ _id:23
images:[1123,6643,4,9087]
}
来自
AllImages
:{ _id:6643}
现在,我需要查看
_id
中是否存在此images
到目前为止,这是我写的:
for img in AllImages:
for alAl in AllAlbums:
alIm = alAl['images']
for qq in alIm:
if qq==img['_id']:
print 'Here!',img['_id'],' with',alAl['_id']
现在这是我得到的输出:
该程序正确匹配
_id
= 69的0
中的词典的images
= AllAlbums
。但是,此后(对于其他
_id
像1,2,3 ... 8899 ... 9999),它不会进入第二个_id
循环进行迭代。是的,我知道我的方法可能很粗糙,但我只需要运行此基本代码即可。如何为
for
重复此光标?抱歉,如果我没有正确格式化代码。我正在使用Python 2.7
最佳答案
来自AllAlbums的字典的定义应如下所示:
album = {'_id': 23, 'images': [1123, 6643, 4, 9087]}
(当然,它可以有更多的字段。)
假设
AllImages
和AllAlbums
是列表,则可以使用列表理解。with_image = [a for a in AllAlbums if 6643 in a[`images`]]