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

Python中如何筛选字典数组里status为‘Won’的元素?

Python中如何筛选字典数组里status为‘Won’的元素?

嘿,我来帮你梳理下问题,顺便给你修正代码和更简洁的解法~

首先你的代码里有几个小问题,导致它跑不起来:

  • 你的元素是字典,不是类实例,所以不能用x.status来访问值,得用字典的键访问语法x["status"]
  • 列表的append是方法,得用result.append(x),而不是append[i](这是把方法当成列表来索引了,完全不对)
  • Python对缩进要求很严格,你代码里的循环、判断、append这些语句都要正确缩进在函数内部

修正后的循环写法

先给你把代码改对:

def get_won_compositions(compositions):
    result = []
    for item in compositions:
        if item["status"] == "Won":
            result.append(item)
    return result

print(get_won_compositions(john_williams_compositions))

我把函数名改成了更清晰的get_won_compositions,参数名也不用list(避免和内置类型重名),这样代码可读性更好。

更Pythonic的列表推导式写法

在Python里,这种筛选列表元素的场景,用列表推导式会更简洁优雅,一行就能搞定:

won_compositions = [item for item in john_williams_compositions if item["status"] == "Won"]
print(won_compositions)

这个写法和上面的循环逻辑完全一样,只是把整个筛选过程浓缩成了一行,是Python里处理这类问题的常用方式。

运行上面任意一种写法,你就能得到所有status为"Won"的字典组成的新数组啦~

备注:内容来源于stack exchange,提问作者Wolk9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:39:28