根据id过滤dicts列表

时间:2013-12-26 12:46:38

标签: python django

我在python中有一个dicts列表,如

[{u'id': 19, u'name': u'SYWSUB'},
 {u'id': 20, u'name': u'SYWSU'},
 {u'id': 40, u'name': u'Others'},
 {u'id': 41, u'name': u'rohit'},
 {u'id': 42, u'name': u'ssc'}]

我想获得除id 42

之外的所有项目

意味着我的输出应该像

[{u'id': 19, u'name': u'SYWSUB'},
 {u'id': 20, u'name': u'SYWSU'},
 {u'id': 40, u'name': u'Others'},
 {u'id': 41, u'name': u'rohit'}]

我试过

other_category = [
    cat for cat in categories if cat['id'] !=  current_course_category ]

WHere current_course_category值是42

但是这一个正在返回整个列表

[{u'id': 19, u'name': u'SYWSUB'},
 {u'id': 20, u'name': u'SYWSU'},
 {u'id': 40, u'name': u'Others'},
 {u'id': 41, u'name': u'rohit'},
 {u'id': 42, u'name': u'ssc'}]

请告诉我,我的错误是什么?>

2 个答案:

答案 0 :(得分:1)

这是应该如何

categories = [{u'id': 19, u'name': u'SYWSUB'},
 {u'id': 20, u'name': u'SYWSU'},
 {u'id': 40, u'name': u'Others'},
 {u'id': 41, u'name': u'rohit'},
 {u'id': 42, u'name': u'ssc'}]

current_course_category = 42
print [cat for cat in categories if cat['id'] != current_course_category]

我希望这会有所帮助。

答案 1 :(得分:0)

[{key:value}为key,your_dict.items()中的值if key!= 42]

这应该这样做