在python3中,我应该使用什么类型来检查字典键是否属于它?

>>> d = {1 : 2}
>>> type(d.keys())
<class 'dict_keys'>

所以我自然尝试了:
>>> isinstance(d.keys(), dict_keys)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dict_keys' is not defined

我应该用什么来代替显式dict_keys作为isinstance的第二个参数?
(这很有用,因为我必须处理可以采用字典键形式的未知输入变量。我知道使用list(d.keys())可以转换为列表(恢复python2行为),但在本例中这不是一个选项。

最佳答案

您可以使用collections.abc.KeysView

In [19]: isinstance(d.keys(), collections.abc.KeysView)
Out[19]: True

collections.abc模块提供抽象基类,可以
用于测试类是否提供特定接口

关于python - isinstance()检查的dict_keys的显式python3类型是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43920587/

10-11 21:55