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

如何用列表推导式处理嵌套字典列表并提取去重年龄值?

提取字典列表中Age的去重集合(简洁实现)

嘿,这个需求完全可以用集合推导式一步搞定,既避免了KeyError,又比你原来的写法更简洁!

核心实现代码

直接用带条件判断的集合推导式,一次性生成去重后的Age集合:

persons = [
 {"Name": "John", "data": {"Age": 23, "Gender": "Male"}},
 {"Name": "Jane", "data": {"Age": 22, "Gender": "Female"}},
 {"Name": "Harry", "data": {"Age": 22}},
 {"Name": "Hermione", "data": {"Gender": "Female"}},
]

ages = {person['data']['Age'] for person in persons if 'Age' in person['data']}
print(ages)  # 输出 {22, 23}

为什么这个写法可行?

  • 集合推导式天生支持去重,不需要额外调用set()或者循环添加元素
  • 末尾的if 'Age' in person['data']做了前置检查,直接过滤掉没有Age键的data字典,从根源上避免了KeyError

另一种可选写法(用dict.get())

如果你习惯用get()方法处理可选键,也可以这么写(不过不如上面的直观):

ages = {age for person in persons if (age := person['data'].get('Age')) is not None}

这里用了海象运算符:=来临时存储get()的结果,再判断是否为None,同样能得到正确的集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:12:09