Python区分数据类型
我有两种不同类型的python列表:Python区分数据类型,python,types,Python,Types,我有两种不同类型的python列表: 1.test1=['abc','cde','fgh'] 2.test2=[{'name':'me','address':'usa'}] 当我检查类型时,两者都显示为列表: 如果test1是list:-->true 如果test2是list:-->true 有什么方法可以检查它是字符串列表还是字典列表吗?检查对象是否属于您通常使用的类isinstance >>> isinstance("hello", str) True >>
1.test1=['abc','cde','fgh']
2.test2=[{'name':'me','address':'usa'}] 当我检查类型时,两者都显示为列表:
如果test1是list:-->true
如果test2是list:-->true
有什么方法可以检查它是字符串列表还是字典列表吗?检查对象是否属于您通常使用的类
isinstance
>>> isinstance("hello", str)
True
>>> isinstance({}, dict)
True
>>> isinstance([], list)
True
>>> isinstance(5, int)
True
>>> isinstance("hello", int)
False
请尝试以下代码段:
for item in test1:
print(type(item))
test2的类似代码段。是的,它们都是列表,句号;类型不考虑列表中的内容
from typing import List, Dict
test1: List[str] = ['abc', 'cde', 'fgh']
test2: List[Dict[str,str]] = [{'name': 'me', 'address': 'use']
def foo(x: List[str]):
...
您可以使用类型提示来限制列表中应该包含的内容,但这些提示仅用于记录预期用途,或通过mypy
等工具;它们不会影响你可以在列表中实际添加的内容
from typing import List, Dict
test1: List[str] = ['abc', 'cde', 'fgh']
test2: List[Dict[str,str]] = [{'name': 'me', 'address': 'use']
def foo(x: List[str]):
...
mypy
将任何试图将test1
传递到foo
的行为标记为错误,但在实际运行代码时,这是允许的
mypy
也会标记为错误,例如
test3: List[str] = ['foo', 1]
由于
1
不是str
,但在运行时这是完全合法的。那么,test1
和test2
是列表,您可以通过
>>> isinstance(test1, list)
True
>>> isinstance(test2, list)
True
(test1是list
而test2是list
实际上返回False
,因为内置的list
类都不是。)
可能让您感到困惑的是,test2
是一个只有一个元素的列表,而该元素是一个字典
>>> test2[0]
{'name': 'me', 'address': 'usa'}
>>> type(test2[0])
dict
如果您想知道列表中包含的所有类型,可以这样做
>>> l = [1, '2', []]
>>> set(map(type, l))
{int, list, str}
# alternative
>>> set(type(x) for x in l)
{int, list, str}
您可以使用以下内容:
test1=[“abc”、“cde”、“fgh”]
如果类型(test1)为列表:
打印(“你好”)
#你好
它将使用type(arg)
函数,您可以直接传递变量或数据以获取作为输出的类型
例如,
type(“test”)
将使其返回
,这意味着它是一个字符串。我将检查每个列表的第一个元素,以确定它是什么类型的列表。例如:
list1_type=typeof(list1[0])
list2_type=typeof(list2[0])
当然,列表不必具有所有相同的类型,因此,如果不检查每个元素,您就无法确定。主要有两种方法可以做到这一点,使用type()或isinstance()。如果您不知道列表的确切类型,最好使用前者(type()),否则后者更合适。 我的解决方案解决了第一种情况,它假设列表可能包含多个类型
test1 = ['abc', 'cde', 'fgh']
test2 = [{'name': 'me', 'address': 'usa'}]
test3 = ['abc', 'cde', 3, [2, 1]]
print("Test1 is a list of ", set([type(elem) for elem in test1])) #str
print("Test2 is a list of ", set([type(elem) for elem in test2])) #dict
print("Test3 is a list of ", set([type(elem) for elem in test3])) #str, int, list
我希望这能回答您的问题:-)test2不是有效的语法,是否要使用{}?您好,感谢您的及时回复。我刚刚更新了test2关于
type(test1[0])
?isinstance(test2[0],dict)
由于列表可能是异构的,所以您必须检查每个元素的类型以确保“type”。