首页 > 解决方案 > 如何在包含字典、整数、浮点数和字符串的列表中找到项目的类型?

问题描述

我必须确定列表中包含的项目类型,但它给出的输出不完整。

它看起来像这样

datalist = [
    {"semester": 1, "year": "2020"},
    1452,
    11.23,
    1 + 2j,
    True,
    "Programming2A",
    (0, -1),
    [5, 12],
]

for item in datalist:
    print("Type of ", item, " is ", type(item))

标签: python

解决方案


我假设您正在尝试获取所有类型,包括内部类型。这是一个简单的程序方法,您可以做到这一点。它只是确定内部类型是否是容器类型,如果是,则通过函数将其发回。

from typing import List, Tuple, Dict

def type_printer(target):
    if isinstance(target, (List, Tuple, Dict)):
        for t in target:
            print(f'Type of {t}  is: {type(t)}')
            if isinstance(t, (List, Tuple, Dict)):
                type_printer(t)
                
datalist = [{"semester":1, "year":'2020'}, 1452, 11.23, 1+2j, True, "Programming2A", (0, -1), [5, 12]]

type_printer(datalist)

如下面的评论所述,typing library用于类型注释。考虑到它的工作原理相同,我不明白为什么它很重要,但这是另一个直接使用类型的版本。我也不同意评论。我认为带注释的类型更清楚地表明我正在寻找该类型。而内置看起来像一个实例。甚至该站点的语法突出显示似乎也同意。

def type_printer(target):
    if isinstance(target, (list, tuple, dict)):
        for t in target:
            print(f'Type of {t}  is: {type(t)}')
            if isinstance(t, (list, tuple, dict)):
                type_printer(t)
                
datalist = [{"semester":1, "year":'2020'}, 1452, 11.23, 1+2j, True, "Programming2A", (0, -1), [5, 12]]

type_printer(datalist)

推荐阅读