如何将字典列表转为值列表?MongoDB分类提取用于HTML导航栏
解决方法:从字典列表提取分类值生成纯列表
嘿,这事儿其实挺简单的,我来给你捋清楚具体步骤:
首先,你已经把MongoDB返回的游标转成了字典列表,假设这个列表长这样:
categories_list = [ {'category': '电子产品'}, {'category': '服装'}, {'category': '家居用品'}, {'category': '电子产品'} # 存在重复分类的情况 ]
方法1:列表推导式(最推荐,简洁易读)
直接遍历每个字典,取出category字段对应的值就行:
# 先确保游标已转为列表 categories_list = list(categories) # 提取所有分类值 category_values = [item['category'] for item in categories_list]
运行后category_values就会变成['电子产品', '服装', '家居用品', '电子产品'],完全符合你要的纯值列表需求。
方法2:处理可能缺失的category字段(避免报错)
如果担心有些产品文档可能没有category字段,可以用get()方法做兼容,还能指定默认值:
category_values = [item.get('category', '未分类') for item in categories_list]
这样遇到没有category的文档,会自动用未分类填充,不会触发KeyError报错。
额外实用技巧:生成去重的分类列表(导航栏常用)
导航栏一般需要唯一的分类,如果你要去掉重复项,可以用集合去重再转回列表:
unique_category_values = list({item['category'] for item in categories_list})
结果就是['电子产品', '服装', '家居用品'](集合是无序的,如果要保留分类第一次出现的顺序,可以用下面的写法):
unique_category_values = [] for item in categories_list: cat = item['category'] if cat not in unique_category_values: unique_category_values.append(cat)
这样就能完美保留原有的分类出现顺序啦。
内容的提问来源于stack exchange,提问作者Oamar Kanji
相关产品推荐
相关产品推荐

