Python如何对值为列表类型的字典按品牌、类型字段进行筛选
筛选操作实现方案
当然可以基于brand和type字段做筛选,你的字典中三个列表是按索引一一对应同一条数据的,只要匹配对应索引的字段条件即可,以下是两种实现方式:
原生Python实现(无需安装第三方库)
inventory = { "brand": ["bmw", "audi", "harley davidson"], "type": ["car", "car", "motorcycle"], "value": [100, 200, 150], } # 自定义筛选条件:此处示例筛选type为car、brand为audi的条目 target_type = "car" target_brand = "audi" # 第一步:筛选出符合条件的索引 valid_indexes = [ i for i in range(len(inventory["brand"])) if inventory["type"][i] == target_type and inventory["brand"][i] == target_brand ] # 第二步:根据有效索引生成新的筛选后字典 filtered_inventory = { key: [value[i] for i in valid_indexes] for key, value in inventory.items() } print(filtered_inventory) # 输出结果:{'brand': ['audi'], 'type': ['car'], 'value': [200]}
如果需要调整筛选规则,直接修改valid_indexes里的判断条件即可,比如只筛选所有type为car的条目,去掉brand的判断条件就行。
Pandas实现(适合高频处理结构化数据场景)
如果经常需要做这类数据筛选、统计操作,可以用pandas库简化代码:
import pandas as pd # 转换为DataFrame结构化格式 df = pd.DataFrame(inventory) # 按条件筛选 filtered_df = df[(df["type"] == "car") & (df["brand"] == "audi")] # 可选:转换回原字典格式 filtered_inventory = filtered_df.to_dict(orient="list") print(filtered_inventory) # 输出结果和原生实现一致
内容的提问来源于stack exchange,提问作者DSantos
相关产品推荐
相关产品推荐

