从 OrderedDict 中删除键和值

Posted

技术标签:

【中文标题】从 OrderedDict 中删除键和值【英文标题】:Delete a key and value from an 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) 方法,特别是如果他们希望将被删除的键的关联值作为结果返回。 Delete an item from a dictionary的可能重复 【参考方案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 用于删除项目并返回已删除的项目,以便以后保存。但是,如果您不需要保存它,那么使用这些方法效率较低。

【讨论】:

以上是关于从 OrderedDict 中删除键和值的主要内容,如果未能解决你的问题,请参考以下文章

从属性文件中删除键和值?

在删除该位置的上一个键之后,将另一个键和值插入字典?

Swift:字典,删除零的键和值

如何删除json对象键和值。?

删除 NSDictionaries 中超过 100.000 公里的键和值

如何从 NSDictionary 中获取键和值?