Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python3中测试对象是否具有类型odict_值?_Python_Python 3.x_Types_Ordereddictionary - Fatal编程技术网

如何在Python3中测试对象是否具有类型odict_值?

如何在Python3中测试对象是否具有类型odict_值?,python,python-3.x,types,ordereddictionary,Python,Python 3.x,Types,Ordereddictionary,在一个项目中,我有一个通用函数,它可以将不同的数据类型作为输入数据。在将项目迁移到Python 3时,我遇到了一个问题,即odict\u值。我需要将它们转换为列表,不幸的是,并非所有数据类型都应该转换。所以我决定这样做: if isinstance(data, odict_values): data = list(data) 但是我得到了一个错误-未定义的变量odict_值。我不明白我应该提供什么作为isinstance的第二个论点。如果我使用类型(数据),我可以清楚地看到。到目前为止

在一个项目中,我有一个通用函数,它可以将不同的数据类型作为输入数据。在将项目迁移到Python 3时,我遇到了一个问题,即
odict\u值
。我需要将它们转换为列表,不幸的是,并非所有数据类型都应该转换。所以我决定这样做:

if isinstance(data, odict_values):
    data = list(data)
但是我得到了一个错误-未定义的变量odict_值。我不明白我应该提供什么作为isinstance的第二个论点。如果我使用
类型(数据)
,我可以清楚地看到
。到目前为止,我提出的最佳解决方案是:

str(类型(数据))==“”


但是感觉不对。

在内置类型中或在
集合
模块中都无法访问
odict\u值
类型

这意味着您必须自己定义它:

从集合导入订单数据
odict_values=类型(OrderedDict().values())
您可以(也可能应该)使用比
odict\u值
更具描述性的名称来表示此类型

但是,您可以将此类型用作
isinstance
检查的第二个参数:

isinstance({1: 1}.values(), odict_values)                   # False
isinstance(OrderedDict([(1, 1)]).values(), odict_values)    # True

如果您想要一个更通用的测试,如果它是映射值的视图(如
dict
orderedict
),那么您可以使用抽象基类:


odict\u值
类型在内置类型中以及
集合
模块中都不可访问

这意味着您必须自己定义它:

从集合导入订单数据
odict_values=类型(OrderedDict().values())
您可以(也可能应该)使用比
odict\u值
更具描述性的名称来表示此类型

但是,您可以将此类型用作
isinstance
检查的第二个参数:

isinstance({1: 1}.values(), odict_values)                   # False
isinstance(OrderedDict([(1, 1)]).values(), odict_values)    # True

如果您想要一个更通用的测试,如果它是映射值的视图(如
dict
orderedict
),那么您可以使用抽象基类: