切片字典列表并删除一个键

dcl*_*ato 0 python dictionary list slice

我有一个字典列表,如下所示:

l = [ { "a": 10, "b": 4, "c": 6 },
      { "a": 10, "b": 6, "c": 8 },
      { "a": 13, "b": 3, "c": 9 },
      { "a": 12, "b": 5, "c": 3 },
      { "a": 11, "b": 7, "c": 1 } ]
Run Code Online (Sandbox Code Playgroud)

现在,我想切片并只有一个列表,其中键a有值10,但从字典中删除键a.如下表所示:

nl = [ { "b": 4, "c": 6 },
       { "b": 6, "c": 8 } ]
Run Code Online (Sandbox Code Playgroud)

我可以通过处理l两次来做到这一点:

l[:] = [d for d in l if d.get("a") == 10]
nl = []
for c in l:
    del c["a"]
    nl.append(c)
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来实现这一目标?

Noa*_*oam 6

可能有更好的方法,但你可以做一个嵌套的字典理解:

[{k:d[k] for k in d if k!="a"} for d in l if d.get("a") == 10]
Run Code Online (Sandbox Code Playgroud)