【问题标题】:Delete a key and value from an OrderedDict从 OrderedDict 中删除键和值
【发布时间】:2015-01-25 04:11:25
【问题描述】:

我正在尝试从 OrderedDict 中删除键和值,但是当我使用时:

dictionary.popitem(key)

即使提供了不同的键,它也会删除最后一个键和值。如果字典可以去掉中间的键吗?

【问题讨论】:

  • Read the docs for OrderedDict.popitem: "如果last 为真,则按 LIFO 顺序返回对,如果为假,则按 FIFO 顺序返回。"
  • dictioary.popitem() 不带参数,使用dictionary.pop(key)
  • @martineau 你也应该点击那个链接 - .popitem 确实接受一个论点,last,否则 OP 会得到一个 TypeError 而不是意外行为
  • @jonrsharpe: True, OrderedDict.popitem() 确实 采用可选参数,但它不是字典中的键——因此 OP 应该使用继承的 dict.pop(key) 方法,特别是如果他们希望将被删除的键的关联值作为结果返回。

标签: python dictionary ordereddictionary


【解决方案1】:

可以使用pop,popitem默认去掉最后一个:

d = OrderedDict([(1,2),(3,4)])
d.pop(your_key)

【讨论】:

    【解决方案2】:

    是的,你可以使用del

    del dct[key]
    

    下面是一个演示:

    >>> from collections import OrderedDict
    >>> dct = OrderedDict()
    >>> dct['a'] = 1
    >>> dct['b'] = 2
    >>> dct['c'] = 3
    >>> dct
    OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    >>> del dct['b']
    >>> dct
    OrderedDict([('a', 1), ('c', 3)])
    >>>
    

    事实上,您应该始终使用del 从字典中删除项目。 dict.popdict.popitem 用于删除项目并返回已删除的项目,以便以后保存。但是,如果您不需要保存它,那么使用这些方法效率较低。

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 2018-03-10
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      相关资源
      最近更新 更多