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

基于字典特定键创建列表:如何过滤列表中所有男/女性姓名?

解决方法

要从给定的字典列表里过滤出女性或男性的姓名,不用写复杂的lambda,用列表推导式就能简单搞定:

example = [
    {'name':'Jane','gender':'female'},
    {'name':'Ben','gender':'male'},
    {'name':'Kate','gender':'female'},
    {'name':'James','gender':'male'},
    {'name':'Lilly','gender':'female'},
    {'name':'Sam','gender':'male'},
    {'name':'Grace','gender':'female'},
    {'name':'Dan','gender':'male'}
]

# 提取所有女性姓名
female_names = [p['name'] for p in example if p['gender'] == 'female']
print(female_names)  # 输出: ['Jane', 'Kate', 'Lilly', 'Grace']

# 提取所有男性姓名
male_names = [p['name'] for p in example if p['gender'] == 'male']
print(male_names)  # 输出: ['Ben', 'James', 'Sam', 'Dan']

如果需要保留完整的字典结构(而不是只提取姓名),可以这样写:

# 过滤出所有女性的字典
female_people = [p for p in example if p['gender'] == 'female']
print(female_people)

你的原代码问题分析

  1. 自定义的dictfilt lambda完全多余——原列表里的每个字典本身就只有name和gender两个键,提取这两个键等于没做任何有效过滤。
  2. 循环中每次给result赋值,最终result只会保留最后一个字典(也就是Dan的那条数据),所以后面的循环只处理了这一条数据。
  3. 最后的判断条件value == 'one_day'完全错误,你需要判断的是gender字段等于female或male。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:15:27