我一直在閱讀一些其他的SO文章,並瞭解我想要完成的東西的零碎,但我還沒有解決包含我的答案要求。Python - 從列表中刪除鍵/值元素並返回新列表
我知道如何從像[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'來完成相反的過濾。 – ForceBru
你給過濾器的謂詞決定*要保留什麼*。只是否定它... –