私はいくつかの他のSOの記事を読んでおり、達成しようとしていることの一部を理解していますが、要件。Python - リストからKey/Value要素を削除して新しいリストを返す
私は[1,2,3,4]のような単純なリストから単一の項目を削除する方法を知っていますが、私は削除しようとしている順序/内容が予測できないより複雑なリストを持っています私は削除する必要が
list = [{u'role': u'OWNER', u'userByEmail': u'[email protected]'}, {u'specialGroup': u'projectWriters', u'role': u'READER'}, {u'specialGroup': u'projectOwners', u'role': u'READER'}, {u'specialGroup': u'projectReaders', u'role': u'READER'}, {u'role': u'READER', u'userByEmail': u'[email protected]'}, {u'view': {u'projectId': u'project-01', u'tableId': u'testing_tbl_2', u'datasetId': u'test2'}}, {u'view': {u'projectId': u'project-01', u'tableId': u'testing_tbl_3', u'datasetId': u'dtest2'}}, {u'view': {u'projectId': u'project-01', u'tableId': u'view1', u'datasetId': u'test2'}}]
:から要素
{u'role': u'READER', u'userByEmail': u'[email protected]'}
とは、そのキー/値の要素が存在しない新しいリストを返します。私はこのようなことをすることができます(私はこの形式を好むでしょう)が、これは、フィルタが探しているキー/値の要素を返します。
>>> filter(lambda row: row.has_key('userByEmail') and row['userByEmail'] == '[email protected]', list)
[{u'role': u'OWNER', u'userByEmail': u'[email protected]'}]
リストから要素を削除し、フィルタリングされた要素がない新しいリストを印刷するにはどうすればよいですか?
だから、正確に反対の 'lambda 'で' filter'を使うべきです。 – ForceBru
フィルタに与える述語は、*保持するものを決める*。ちょうどそれを否定する... –