如何比较对象类型,包括子类型?例如:
lst1 = [1, 2, 3]
lst2 = ['a', 'b', 'c']
lst1
是整数列表,lst2
是字符串列表,因此它们不相等。再比如:
dct1 = {'a': [1, 2, 3]}
dct2 = {'b': [4, 5, 6]}
dct1
和dct2
是相等的,因为两者都将键作为字符串,将值作为整数列表。
编辑:为简单起见,我们使用JSON友好的类型,如字典,列表,整数等。我们不考虑混合子类型,如整数和字符串列表或具有不同键/值类型的字典{'x': [1, 'b'], 2: (2, 'c')}
,并且只深入前两个级别。非常欢迎使用更通用的解决方案来回答。
这是我的解决方案:
def same_same(l1,l2):
return([type(x) for x in l1]==[type(x) for x in l2])
所以,解释一下:
该函数基本上在l1
内创建一个新的类型列表,反之亦l2
然。然后,它会比较它们并返回True
或False
。
注意:仅适用于列表。