Удалить dict из списка совпадающих значений - PullRequest
0 голосов
/ 28 мая 2018

У меня есть список dict,

list dict =  [
         {'children': [], 'folder': 'test2', 'parent': 'None'},
         {'children': [{'children': [], 'folder': 'arun2', 'parent': 'arun2'}],
          'folder': 'arun2',
          'parent': 'None'},
         {'children': [], 'folder': 'important', 'parent': 'None'},
         {'children': [], 'folder': 'arun', 'parent': 'None'},
         {'children': [], 'folder': 'hoi', 'parent': 'None'},
         {'children': [], 'folder': 'drafts', 'parent': 'None'},
         {'children': [], 'folder': 'Trash', 'parent': 'None'},
         {'children': [], 'folder': 'sent', 'parent': 'None'},
         {'children': [], 'folder': 'spam', 'parent': 'None'},
         {'children': [], 'folder': 'reference', 'parent': 'None'},
         {'children': [], 'folder': 'test3', 'parent': 'None'},
         {'children': [], 'folder': 'test1', 'parent': 'None'},
         {'children': [], 'folder': 'INBOX', 'parent': 'None'} 
        ]

Теперь я хочу удалить dict из list_dict, который имеет все значения в remove_key_list

remove_key_list = ['INBOX','sent','Trash']

Напримеря хочу удалить {'children': [], 'folder': 'INBOX', 'parent': 'None'} из list dict и вернуть list dict

Я новичок в python, как использовать функции del, lamda здесь.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Если вы хотите удалить только диктовки, равные folder одному из ваших remove_key_list, это должно сделать эту работу.

list_dict =  [
         {'children': [], 'folder': 'test2', 'parent': 'None'},
         {'children': [{'children': [], 'folder': 'arun2', 'parent': 'arun2'}],
          'folder': 'arun2',
          'parent': 'None'},
         {'children': [], 'folder': 'important', 'parent': 'None'},
         {'children': [], 'folder': 'arun', 'parent': 'None'},
         {'children': [], 'folder': 'hoi', 'parent': 'None'},
         {'children': [], 'folder': 'drafts', 'parent': 'None'},
         {'children': [], 'folder': 'Trash', 'parent': 'None'},
         {'children': [], 'folder': 'sent', 'parent': 'None'},
         {'children': [], 'folder': 'spam', 'parent': 'None'},
         {'children': [], 'folder': 'reference', 'parent': 'None'},
         {'children': [], 'folder': 'test3', 'parent': 'None'},
         {'children': [], 'folder': 'test1', 'parent': 'None'},
         {'children': [], 'folder': 'INBOX', 'parent': 'None'} 
        ]

filter_list = ['INBOX', 'sent', 'Trash']

filtered_list = [d for d in list_dict if d['folder'] not in filter_list]
0 голосов
/ 28 мая 2018
for k,i in enumerate(list(list_dict)):
    if i['folder'] in remove_folder_list:
        del list_dict[list_dict.index(i)]

print(list_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...