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

如何筛选列表中符合值条件的字典?修正代码实现匹配service为flipkart

问题分析与修正方案

嘿,我来帮你看看问题出在哪~你的filter用法里藏了个小错误:在lambda表达式中,你写了(line['service'] for line in result) == 'flipkart',这其实是把一个生成器对象和字符串'flipkart'做比较,这两者永远不可能相等,所以filter自然返回空迭代器啦。

正确的思路很简单:filter的lambda参数x就是列表里的每一个字典元素,你只需要直接判断这个字典的'service'字段是否等于'flipkart'就行。另外要注意,Python3里filter()返回的是迭代器对象,不是列表,需要用list()把它转成列表才能看到具体内容。

修正后的代码

result = [{"origin_location":'original', 'service':'amazon'}, {"origin_location":"duplicate", 'service':'flipkart'}]
# 正确的filter用法
filtered_result = list(filter(lambda x: x['service'] == 'flipkart', result))
print("Result= ", filtered_result)

更直观的替代方案:列表推导式

其实在Python里,列表推导式处理这种过滤场景往往更易读,写法如下:

result = [{"origin_location":'original', 'service':'amazon'}, {"origin_location":"duplicate", 'service':'flipkart'}]
filtered_result = [item for item in result if item['service'] == 'flipkart']
print("Result= ", filtered_result)

两种写法都会输出你期望的结果:

Result=  [{'origin_location': 'duplicate', 'service': 'flipkart'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:53:55