You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python用for循环更新字典仅保留首个元素,求助排查问题

问题分析与解决

你遇到的核心问题是用字典存储多个文档时的键覆盖问题:

字典的核心特性是键唯一,每个键只能对应一个值。你用new_dict.update(i)时,会把当前文档i里的所有键值对覆盖到new_dict中——因为每个MongoDB文档都包含_id、company这些相同的键,所以每一次循环都会把new_dict里的旧值替换成当前文档的新值,最后自然只剩最后一个符合条件的文档。

修正方案

想要保存多个文档,应该用列表作为存储容器,列表可以容纳多个独立的字典(文档)。修改后的代码如下:

# 从MongoDB获取数据
upd = collection.find()

# 用列表存储过滤后的结果(替换原来的空字典)
new_list = []
for doc in upd:
    # 跳过指定_id的文档
    if doc['_id'] not in ['1','2','3','5']:
        new_list.append(doc)  # 将符合条件的文档添加到列表

# 打印所有符合条件的文档
for item in new_list:
    print(item)

额外说明

你原代码里的test_dict未定义就调用test_dict.update(i),属于无效代码,会引发报错,建议直接删除这一行。

内容的提问来源于stack exchange,提问作者Abdul Rahuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:24:36