首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中追加不同的字典值

在列表中追加不同的字典值
EN

Stack Overflow用户
提问于 2015-06-16 23:14:34
回答 3查看 143关注 0票数 1

我将字典列表存储在mongodb数据库中。

每隔一个小时,我就会得到带有新字典值的list with list,一些字典可能与先前插入的字典相同。

所以我只想在列表中插入不同字典,并在mongo中更新列表。

插入1

代码语言:javascript
运行
复制
res = [{"a": 1},{"b": 2},{"c": 4},{"d": 5},{"e": 6}]

插入2

代码语言:javascript
运行
复制
res = [{"f": 7},{"b": 2},{"c": 4},{"g": 8},{"h": 9}]

在第二次插入期间,我将获取res并附加新的res。但是在追加的时候,我想在列表中处理不同的字典。

除了逐个检查列表中的所有值之外,有没有什么python函数可以解决这个问题?

或者以任何方式让mongodb自己处理这件事。

EN

回答 3

Stack Overflow用户

发布于 2015-06-16 23:35:54

作为此任务的python配方,您可以使用set作为字典项(元组)的容器,以保留唯一元素,然后再次转换为dict:

代码语言:javascript
运行
复制
res1 = [{"a": 1},{"b": 2},{"c": 4},{"d": 5},{"e": 6}]
res2 = [{"f": 7},{"b": 2},{"c": 4},{"g": 8},{"h": 9}]

>>> [{i:j} for i,j in {next(i.iteritems()) for i in res1+res2}]
[{'a': 1}, {'b': 2}, {'e': 6}, {'f': 7}, {'h': 9}, {'c': 4}, {'g': 8}, {'d': 5}]
票数 2
EN

Stack Overflow用户

发布于 2015-06-16 23:23:10

upsert应该能做你想做的事:

代码语言:javascript
运行
复制
for key in res.keys():
    db.collection.update(
       {username:key},
       {$set:{'value':res[key]}},
       {upsert: true}
)

或者,使用集在python中执行此操作。

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 23:27:49

我相信您正在寻找MongoDB中的$addToSet运算符:

http://docs.mongodb.org/manual/reference/operator/update/addToSet

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30871623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档