那么,想象这样一个项目:
x = {"name":"blah",
"this_must_go":"obsolette",
"this_must_also_go":"unfixable",
"type":4}
,假设我有一个包含200个x
的列表,我想从列表中的所有x
中删除所有this_must_go
和this_must_also_go
字段,没有例外。如果可能的话,我更喜欢使用列表推导式。是否有一行或简洁的语法来实现这一点?
使用包含字典推导式的列表推导式
fields_to_delete = {'this_must_go', 'this_must_also_go'}
new_list = [{k: v for k, v in x.items() if k not in fields_to_delete}
for x in original_list]
您可以使用字典键像集合一样的事实,并在列表推导式中减去不需要的键。
to_drop = {'this_must_go', 'this_must_also_go'}
xs = [
{"name":"blah1", "this_must_go":"obsolette", "this_must_also_go":"unfixable", "type":4},
{"name":"blah2", "this_must_go":"obsolette", "this_must_also_go":"unfixable", "type":5},
{"name":"blah3", "this_must_go":"obsolette", "this_must_also_go":"unfixable", "type":6}
]
[{k:x[k] for k in x.keys() - to_drop} for x in xs]
这将给新的字典在列表中,如:
[
{'type': 4, 'name': 'blah1'},
{'type': 5, 'name': 'blah2'},
{'type': 6, 'name': 'blah3'}
]
python化:
[
{
k: v
for k, v in d.items() if k not in ['this_must_go', 'this_must_also_go']
}
for d in your_list
]