【问题标题】:List iteration on python with mongodb使用 mongodb 在 python 上列出迭代
【发布时间】:2020-11-27 16:03:15
【问题描述】:

我正在开发一个小型 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"
}

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

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

【问题讨论】:

  • 到目前为止你尝试了什么?请分享您的代码的基本 sn-p,以便更轻松地帮助您。
  • 这是来自玩家集合 "name" : "Player" "value": ["India", "Aus", "SA"]。我尝试了基本的编码,比如从数据库中获取文档等等。没有这方面的线索。

标签: python-3.x mongodb list python-2.7


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2020-07-10
    相关资源
    最近更新 更多