python - 哪种方法适合测试字典类型?

标签 python dictionary isinstance

为什么有这么多不同的方法来测试字典? 测试对象是否为字典的最现代方法是什么?

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.DictTypetypes.DictionaryType 已弃用(嗯,在 Python 3 中删除)dict 的别名。

collections.Mappingcollections.MutableMapping抽象基类 (ABC),因此它们与不从 字典。通常这会使它们成为更好的选择,尽管偶尔更严格的类型检查会有所帮助。

所以基本上,按顺序检查

  • 如果可能,都不是(鸭型)

  • collections.Mapping 如果你不需要突变

  • collections.MutableMapping 如果您确实需要突变

  • dict 如果您需要它实际上是 dict 类型(这应该很少见)

    <
  • types.DictTypetypes.DictionaryType 如果您想支持真正的旧版本

关于python - 哪种方法适合测试字典类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305359/

相关文章:

python - Modal Bootstrap - 源代码与 Chrome 呈现的信息不同

python - 在 Python : Getting "name ' Tk' is not defined"only at Command Prompt, 中编程在 IDLE 中工作

objective-c - 将键的值插入 NSMutableArray

c# - 如何仅从字典中获取特定类型的键值对

python - 如何提取pandas DataFrame中的属性名称和最大共现计数?

python - 安装了 python 2.7.3,我所有的库都在 python 2.6 上。

javascript - 需要有关基于 Javascript 的交互式 map 的建议

PHP 检查 DateTime 实例?

python - 使用 isinstance() 可以覆盖类型

java - 同一类上的 isInstance() 在异常处理期间返回 false