过滤列表中的词典值并从列表中删除该词典的最佳方法是什么

时间:2016-08-09 14:28:41

标签: python python-2.7 dictionary

例如我在列表中有词典,

student_list = [{'name':'ABC', 'marks': 8}, {'name':'DEF', 'marks': 0}, {'name': 'GHI', 'marks': 0}, {'name': 'JKL', 'marks': 0}, {'name': 'JKL', 'marks': 9}]

输出应该像,

[{'name':'ABC', 'marks': 8}, {'name': 'JKL', 'marks': 9}]

最好的方法是什么。

我可以使用forloop来获取此输出,但我想用python built_in函数来处理它,或者在不使用forloop的情况下处理它。

2 个答案:

答案 0 :(得分:2)

您可以使用列表理解。

print [i for i in student_list if i['marks'] > 0]

根据评论中的建议,您也可以使用

print [i for i in student_list if i.get('marks', 0)]

答案 1 :(得分:1)

你正在寻找一些有点高级的东西:

print filter(lambda x: True if x['marks'] > 0 else False, student_list)

但这实际上只是已经建议的列表推导的等价物。请参阅文档的this相关部分。