首页 > 解决方案 > 使用 mongodb 在 python 上列出迭代

问题描述

我正在开发一个小型 python 项目,我需要在其中创建一个 mongodb 条目。

这是您从另一个集合收到的值列表:

["India", "Australia", "South Africa"]

所以上面的列表包含三个项目。我想要的下一个系列是:

{
"_id": ObjectId('some id'),
"name": "Player",
"value": "India"
}

{
"_id": ObjectId('some id'),
"name": "Player",
"value": "Australia"
}

{
"_id": ObjectId('some id'),
"name": "Player",
"value": "South Africa"
}

我只想将值列表添加到值键中,但名称应该是常量。它应该一次又一次地重复,但值键将根据列表中的数字条目进行更改。

如何在 python 中解决这个问题?

标签: python-3.xmongodblistpython-2.7

解决方案


您可以通过不同的方式解决此问题。一个非常基本的方法是使用这样的列表推导:

values_list = ["India", "Australia", "South Africa"]
names_list = ["Peter", "Paul", "Mary"]


def create_objects(name, values):
    # this returns a list of dicts basically and should be adopted to create 'real' mongoDB objects/entries
    return [{"_id": "some id", "name": name, "value": value} for value in values]


objects = [create_objects(name, values_list) for name in names_list]
print(objects)

另一种方法是预先计算所有可能的组合(在 itertools 中称为产品),以防止两个交互的 for 循环

from itertools import product

objects = [{"_id": "some id", "name": name, "value": value} for name, value in product(names_list, values_list)]
print(objects)

推荐阅读