2024-06-01 05:32:42 发布
网友
我有这样一个清单:
l = [{'username': u'bob', 'id': 2L, 'email': u'bob@me.com'}, {'username': u'jane', 'id': 3L, 'email': u'jane@me.com'}]
所以我想知道从列表中删除bob对象的最佳方法是什么?
bob
我知道如何使用remove()来消除一个元素,但不确定如何消除整个对象。
remove()
使用列表理解并过滤掉不需要的对象,如下所示
>>> [item for item in l if item['username'] != 'bob'] [{'email': 'jane@me.com', 'username': 'jane', 'id': 3}]
或者,也可以使用filter函数,如下所示
filter
注意:这两个方法都返回一个新列表,其中没有您不想要的项。它们不会改变原始对象。
您可以使用列表理解来遍历列表,并保留那些用户名值不是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。
dict.get
username
KeyError
下面将返回用户名不是bob的所有对象:
l2 = filter(lambda x: x['username'] != 'bob', l)
现在,如果打印l2,您将得到:
使用列表理解并过滤掉不需要的对象,如下所示
或者,也可以使用
^{pr2}$filter
函数,如下所示注意:这两个方法都返回一个新列表,其中没有您不想要的项。它们不会改变原始对象。
您可以使用列表理解来遍历列表,并保留那些用户名值不是
bob
的字典:注意,使用
dict.get
可以为这个方法设置一个默认值,如果您的字典没有键username
,那么它将不会引发KeyError
。下面将返回用户名不是bob的所有对象:
现在,如果打印l2,您将得到:
^{pr2}$相关问题 更多 >
编程相关推荐