如何在python中从列表中删除一个对象?

2024-06-01 05:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个清单:

l = [{'username': u'bob', 'id': 2L, 'email': u'bob@me.com'}, {'username': u'jane', 'id': 3L, 'email': u'jane@me.com'}]

所以我想知道从列表中删除bob对象的最佳方法是什么?

我知道如何使用remove()来消除一个元素,但不确定如何消除整个对象。


Tags: 对象方法comid元素列表emailusername
3条回答

使用列表理解并过滤掉不需要的对象,如下所示

>>> [item for item in l if item['username'] != 'bob']
[{'email': 'jane@me.com', 'username': 'jane', 'id': 3}]

或者,也可以使用filter函数,如下所示

^{pr2}$

注意:这两个方法都返回一个新列表,其中没有您不想要的项。它们不会改变原始对象。

您可以使用列表理解来遍历列表,并保留那些用户名值不是bob的字典:

>>> [_dic for _dic in l if _dic.get('username','')!='bob']
[{'username': u'jane', 'id': 3L, 'email': u'jane@me.com'}]

注意,使用dict.get可以为这个方法设置一个默认值,如果您的字典没有键username,那么它将不会引发KeyError

下面将返回用户名不是bob的所有对象:

l2 = filter(lambda x: x['username'] != 'bob', l)

现在,如果打印l2,您将得到:

^{pr2}$

相关问题 更多 >