0

在 Scala 中,要从我需要做的字典中删除一个键(从 REPL 粘贴):

scala> Map(9 -> 11, 7 -> 6, 89 -> 43) - 9
res4: scala.collection.immutable.Map[Int,Int] = Map(7 -> 6, 89 -> 43)

要删除多个键:

scala> Map(9 -> 11, 7 -> 6, 89 -> 43) -- Seq(9, 89)
res5: scala.collection.immutable.Map[Int,Int] = Map(7 -> 6)

这样做的 Python 方法是什么?(我发布了 Scala 示例,因为这是我的背景。)

4

2 回答 2

7

如果d是您的字典和k要删除的键:

d.pop(k)

例如:

d = {"a": 1, "b": 2, "c": 3}
d.pop("a")
print d
# {'c': 3, 'b': 2}

如果要删除多个:

for k in lst:
    d.pop(k)

如果您想以非破坏性方式执行此操作,并获得一个作为子集的新字典,您最好的选择是:

s = set(lst)
new_dict = {k: v for k, v in d.items() if k not in s}

您可以使用k not in lst而不是处理set(lst),但set如果要删除的项目列表很长,使用会更快。

于 2012-10-05T20:10:07.440 回答
1
>>> d = {"a": 1, "b": 2, "c": 3}
>>> for _ in ['a','c']: del(d[_])
... 
>>> d
{'b': 2}
于 2012-10-07T19:07:03.673 回答