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

如何将MongoDB字典get()方法返回的列表转为字典?

解决MongoDB嵌套文档中Brand列表转字典的问题

我来帮你搞定这个问题!你从MongoDB获取到的Brand字段是一个列表结构,里面每个元素都是仅包含单个品牌键的字典。要把它转换成以品牌名为键、对应车型列表为值的字典,这里有几种简洁的实现方式:

方法一:循环遍历合并(直观易懂)

先拿到Brand列表,然后逐个遍历里面的单键字典,把键值对合并到新字典里:

myclient = pymongo.MongoClient('mongodb://someCollections')
mydb = myclient['data']
mycol = mydb['Test_CarList']
x = mycol.find_one() 

# 获取Brand列表,默认空列表避免报错
brand_list = x.get("Brand", [])
brand_dict = {}

# 遍历每个品牌项
for item in brand_list:
    # 每个item是单键字典,直接取出键和对应车型列表
    for brand_name, models in item.items():
        brand_dict[brand_name] = models

方法二:字典推导式(简洁高效)

如果喜欢更紧凑的代码,可以用嵌套的字典推导式一步完成转换:

myclient = pymongo.MongoClient('mongodb://someCollections')
mydb = myclient['data']
mycol = mydb['Test_CarList']
x = mycol.find_one() 

brand_list = x.get("Brand", [])
brand_dict = {k: v for item in brand_list for k, v in item.items()}

额外说明:处理重复品牌

如果你的Brand列表里存在重复的品牌名(比如两个元素都包含Ford),上面的方法会用后面的车型列表覆盖前面的。要是需要合并重复品牌的车型,可以修改代码如下:

brand_dict = {}
for item in brand_list:
    for brand_name, models in item.items():
        if brand_name in brand_dict:
            # 合并车型列表
            brand_dict[brand_name].extend(models)
        else:
            brand_dict[brand_name] = models

举个实际转换的例子:
假设原Brand列表是:

[
    { "Ford": [
        { "Modell": "Kuga", "ps": "125", "registered": True },
        { "Modell": "Focus", "ps": "78", "registered": False }
    ]},
    { "Toyota": [
        { "Modell": "Camry", "ps": "180", "registered": True }
    ]}
]

转换后的brand_dict会变成:

{
    "Ford": [
        { "Modell": "Kuga", "ps": "125", "registered": True },
        { "Modell": "Focus", "ps": "78", "registered": False }
    ],
    "Toyota": [
        { "Modell": "Camry", "ps": "180", "registered": True }
    ]
}

内容的提问来源于stack exchange,提问作者Max Mark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:24:07