【问题标题】:Removing one or multiple keys from a dictionary从字典中删除一个或多个键
【发布时间】:2012-10-05 20:09:03
【问题描述】:

在 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 示例,因为这是我的背景。)

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    如果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 会更快。

    【讨论】:

    • 有没有办法在没有指定键的情况下获取新字典?
    • 我们已经输入相同的内容五分钟了。删除了我的答案,+1 给你的。
    • d.pop(k) 返回删除的项目。如果这是你不需要的副作用,你也可以del d[k]
    • @larsmans:为你着想! (这种问题确实会发生)。
    • 我期待一些更短的东西,但这也很好。谢谢。
    【解决方案2】:
    >>> d = {"a": 1, "b": 2, "c": 3}
    >>> for _ in ['a','c']: del(d[_])
    ... 
    >>> d
    {'b': 2}
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 2022-08-08
      • 2012-02-18
      • 2021-11-18
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多