Lambda筛选Python字典列表

Lambda筛选Python字典列表,python,list,dictionary,Python,List,Dictionary,我刚开始用python编程,但对字典有点怀疑 我有这个数组,我已经有了一个获取id数组的方法,我尝试用lambda创建一个过滤列表, 我的问题是,除了过滤列表之外,我是否可以在列表中只保留必要的属性作为示例 例如: ages = [{'employedId': 1, 'age': 22}, {'employedId': 2, 'age': 32}, {'employedId': 3, 'age': 17}, {'employedId': 4

我刚开始用python编程,但对字典有点怀疑

我有这个数组,我已经有了一个获取id数组的方法,我尝试用lambda创建一个过滤列表, 我的问题是,除了过滤列表之外,我是否可以在列表中只保留必要的属性作为示例

例如:

 ages = [{'employedId': 1, 'age': 22},
         {'employedId': 2, 'age': 32},
         {'employedId': 3, 'age': 17},
         {'employedId': 4, 'age': 53},
         {'employedId': 5, 'age': 32},
         {'employedId': 6, 'age': 22}
         ]
list_filtred = list(filter(lambda tag: tag['age'] == 22, ages))
python输出

我可以创建一个lambda过滤方法来获得这样的输出吗?或者我必须处理数组来创建一个新的值吗​​名单

预期产量


在使用“年龄”进行筛选后,可以使用列表理解来访问与“EmployeId”键对应的值

>>> [tag['employedId'] for tag in ages if tag['age'] == 22]
[1, 6]
filter函数本身无法做到这一点,但您可以使用函数式、声明式风格而不是命令式风格来做到这一点

例如,提取所有22岁的人

list_filtered=listfilterlambda标记:标记['age']==22,ages Lambda函数是强大的工具;您可以构造各种条件

要获得所需格式的数组,请尝试map函数,该函数使用类似的原理,但不是过滤数组,而是将函数的结果应用于数组中的每个项

list_filtered=listmaplambda x:x['employedId',年龄
作为一种利用现有列表语句的替代方法,您可以添加一个获取EmployeId键的映射语句:

从运算符导入itemgetter listmapitemgetter'EmployeId',filterlambda标记:标记['age']==22,ages [1, 6]
否则,我认为@CoryKramer的答案更具可读性

非常感谢,我不知道会出现这种情况小心,map不会返回列表,而是一个迭代器
[1,6]
>>> [tag['employedId'] for tag in ages if tag['age'] == 22]
[1, 6]