0

Python 的OrderedDict数据结构是可变集合吗?

文档没有说什么,在网上快速搜索后,我还没有找到任何答案。

4

3 回答 3

3

文档没有说什么,在网上快速搜索后,我还没有找到任何答案。

当对类的可变性有疑问时,您可以运行以下测试

from collections import OrderedDict
from collections.abc import MutableSequence, MutableSet, MutableMapping
print(issubclass(OrderedDict,(MutableSequence,MutableSet,MutableMapping)))

输出

True

有关可以通过这种方式检查的其他内容,请参阅文档中的Collections Abstract Base Classes 。collections.abc

于 2021-11-17T10:39:35.203 回答
1

来自realpython.com

由于 OrderedDict 是一个可变数据结构,您可以对其实例执行变异操作。您可以插入新项目、更新和删除现有项目等。如果您将新项目插入现有的有序字典,则该项目将添加到字典的末尾:

他们提供了几个可变操作的例子,比如插入:

>>> from collections import OrderedDict

>>> numbers = OrderedDict(one=1, two=2, three=3)
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> numbers["four"] = 4
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3), ('four', 4)])

一般来说,如果一个数据类型支持以下操作,那么它被认为是可变序列类型。

于 2021-11-17T10:35:14.870 回答
1

OrderedDict 是可变的:

from collections import OrderedDict

d = OrderedDict.fromkeys('abcde')
d['a']= 'aretor'
print(d)

>> OrderedDict([('a', 'aretor'), ('b', None), ('c', None), ('d', None), ('e', None)])

print(d['a'])
>> aretor
于 2021-11-17T10:39:00.447 回答