【发布时间】:2016-12-24 14:52:17
【问题描述】:
我有一个字典列表,如下所示:
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 } ]
现在,我想对它进行切片并仅列出一个字典,其中键 a 具有值 10,但从字典中删除键 a。喜欢下面的列表:
nl = [ { "b": 4, "c": 6 },
{ "b": 6, "c": 8 } ]
我可以通过处理l 两次来做到这一点:
l[:] = [d for d in l if d.get("a") == 10]
nl = []
for c in l:
del c["a"]
nl.append(c)
有没有更直接的方法可以做到这一点?
【问题讨论】:
-
您能否澄清一下您是想修改
l还是仅仅能够获得包含更改的新字典? -
@Karin,我想获得一份新名单并确保
l安全 -
听起来不错:) 只是想指出您发布的实现并没有这样做 - 它也会从
l的内部字典中删除a。 -
@Karin 是的,我的错。应该是
nl[:] = ....
标签: python list dictionary slice