对象类型的深度比较



如何比较对象类型,包括子类型?例如:

lst1 = [1, 2, 3]
lst2 = ['a', 'b', 'c']

lst1是整数列表,lst2是字符串列表,因此它们不相等。再比如:

dct1 = {'a': [1, 2, 3]}
dct2 = {'b': [4, 5, 6]}

dct1dct2是相等的,因为两者都将键作为字符串,将值作为整数列表。

编辑:为简单起见,我们使用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然。然后,它会比较它们并返回TrueFalse

注意:仅适用于列表。

最新更新