首页 > 解决方案 > 通过检查列表中的元素类型,返回错误值

问题描述

有 2 个列表,一个带有 dict 内部,一个带有 int 的 snother

values_dict = [{'other clicks': 497, 'photo view': 509, 'link clicks': 49}]

values_int = [1055]

我必须先检查里面元素的类型,然后再做点别的

所以,最简单的方法:

for v in values_dict:
    if type(v) == dict:
        print('1')
    elif type(v) != dict:
        print('2')

我不知道为什么,但它返回“2”,就像 values_dict 变量中没有字典一样。

然而,

for v in values_dict:
    print(type(v))

退货<class 'dict'>

我试过这样

for v in values_dict:
    if isinstance(value, type(dict)) is True:
        print('1')
    else:
        print('2')

它还返回“2”

我不知道是什么问题,有人遇到过同样的问题吗?

标签: pythonpython-3.xlistdictionarytypes

解决方案


这应该可以工作-您的第二个代码稍微偏离了。type()可以在此处查看文档,并建议isinstance()用于测试对象的类型。的返回值type是一个类型对象 - 不是字符串,因此根据字符串测试它的值通常会产生意想不到的结果。

for v in values_dict:
    if isinstance(v, dict):
        print('1')
    else:
        print('2')

输出:

1

推荐阅读