为什么有这么多不同的方法来测试字典? 测试对象是否为字典的最现代方法是什么?
adict = {'a': 1}
In [10]: isinstance(adict, types.DictType)
Out[10]: True
In [11]: isinstance(adict, types.DictionaryType)
Out[11]: True
In [12]: isinstance(adict, dict)
Out[12]: True
In [13]: isinstance(adict, collections.Mapping)
Out[13]: True
In [14]: isinstance(adict, collections.MutableMapping)
Out[14]: True
最佳答案
types.DictType
和 types.DictionaryType
已弃用(嗯,在 Python 3 中删除)dict
的别名。
collections.Mapping
和 collections.MutableMapping
是抽象基类 (ABC),因此它们与不从 字典
。通常这会使它们成为更好的选择,尽管偶尔更严格的类型检查会有所帮助。
所以基本上,按顺序检查
如果可能,都不是(鸭型)
collections.Mapping
如果你不需要突变collections.MutableMapping
如果您确实需要突变
<dict
如果您需要它实际上是dict
类型(这应该很少见)types.DictType
或types.DictionaryType
如果您想支持真正的旧版本
关于python - 哪种方法适合测试字典类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305359/