如何在Python中迭代?

时间:2014-03-23 13:02:20

标签: python python-2.7

我是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']

现在这是我得到的输出:

该程序正确匹配_id0 = images的{​​{1}}字典{69} AllAlbums

然而,在那之后(对于_id的其余部分,如1,2,3 ... 8899 ... 9999),它不会进入第二个_id循环进行迭代。是的,我知道我的方法可能很粗糙,但我只需要运行这个基本代码。

如何为for重新迭代此光标?

如果我没有正确格式化代码,请道歉。我在使用Python 2.7

2 个答案:

答案 0 :(得分:1)

AllAlbums中字典的定义应该是这样的:

album = {'_id': 23, 'images': [1123, 6643, 4, 9087]}

(当然,它可能有更多的领域。)

假设AllImagesAllAlbums是列表,您可以使用列表推导。

with_image = [a for a in AllAlbums if 6643 in a[`images`]]

答案 1 :(得分:0)

解决方案很简单。

我只是从游标实例AllAlbums中创建了一个列表,并且能够多次重复迭代。非常感谢那些向我指出这一点的人(:

AllAlbumList = list(AllAlbums)