从 OrderedDict 中删除键和值
Posted
技术标签:
【中文标题】从 OrderedDict 中删除键和值【英文标题】:Delete a key and value from an OrderedDict 【发布时间】:2015-01-25 04:11:25 【问题描述】:我正在尝试从 OrderedDict
中删除键和值,但是当我使用时:
dictionary.popitem(key)
即使提供了不同的键,它也会删除最后一个键和值。如果字典可以去掉中间的键吗?
【问题讨论】:
Read the docs forOrderedDict.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.pop
和 dict.popitem
用于删除项目并返回已删除的项目,以便以后保存。但是,如果您不需要保存它,那么使用这些方法效率较低。
【讨论】:
以上是关于从 OrderedDict 中删除键和值的主要内容,如果未能解决你的问题,请参考以下文章