我是Python的新手,但我已经通过了语法。这是我的情景:
我有两个游标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
中0
= images
的{{1}}字典{69} AllAlbums
。
然而,在那之后(对于_id
的其余部分,如1,2,3 ... 8899 ... 9999),它不会进入第二个_id
循环进行迭代。是的,我知道我的方法可能很粗糙,但我只需要运行这个基本代码。
如何为for
重新迭代此光标?
如果我没有正确格式化代码,请道歉。我在使用Python 2.7
答案 0 :(得分:1)
AllAlbums中字典的定义应该是这样的:
album = {'_id': 23, 'images': [1123, 6643, 4, 9087]}
(当然,它可能有更多的领域。)
假设AllImages
和AllAlbums
是列表,您可以使用列表推导。
with_image = [a for a in AllAlbums if 6643 in a[`images`]]
答案 1 :(得分:0)
解决方案很简单。
我只是从游标实例AllAlbums
中创建了一个列表,并且能够多次重复迭代。非常感谢那些向我指出这一点的人(:
AllAlbumList = list(AllAlbums)