如何检查对象的类型为“dict_items”?

Posted

技术标签:

【中文标题】如何检查对象的类型为“dict_items”?【英文标题】:How to check an object has the type 'dict_items'? 【发布时间】:2018-08-24 09:06:31 【问题描述】:

在 Python 3 中,我需要测试我的变量是否具有“dict_items”类型,所以我尝试了类似的方法:

>>> d='a':1,'b':2
>>> d.items()
dict_items([('a', 1), ('b', 2)])
>>> isinstance(d.items(),dict_items)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dict_items' is not defined

dict_items 不是已知类型。它也没有在types 模块中定义。如何测试类型为 dict_items 的对象(不消耗数据)?

【问题讨论】:

相关阅读:***.com/q/47273297/18771 没有办法直接得到它,你可以使用type(.items())或使用abc.ItemsView,基本上就是same thing internally。 types module下的很多其他类型也是同样的定义方式。 【参考方案1】:

你可以使用collections.abc:

from collections import abc

isinstance(d.items(), abc.ItemsView)  # True

注意dict_itemsabc.ItemsView子类,而不是相同 类。为了获得更高的精度,您可以使用:

isinstance(d.items(), type(.items()))

为了澄清以上内容,您可以使用issubclass

issubclass(type(d.items()), abc.ItemsView)  # True
issubclass(abc.ItemsView, type(d.items()))  # False

【讨论】:

以上是关于如何检查对象的类型为“dict_items”?的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法腌制 dict_items 对象

如何检查对象是不是是Java中的集合类型?

如何检查我的 python 对象是不是为数字? [复制]

如何检查对象是不是是某种类型的数组?

如何确定对象类型是不是为内置系统类型

如何检查 ArrayList 中的对象类型