作为防御性编程的一种手段,我实现了一段相当简单的代码来检查传递给我的函数的给定列表的所有元素(不同类型)是否可以通过比较运算符(有一个或所有实施的丰富比较方法)。
我对此的看法是迭代列表并编目可用类型以及字典中每个对象的单个实例,然后运行字典的键,将每个选定的对象相互比较以查看它们是否返回布尔值或引发TypeError.
下面是我的想法的实现:
test = [1, 2, 'str', 4.5, {'r':'d'}]
type_dict = {}
for elem in test:
if not isinstance(elem, tuple(type_dict.keys())):
type_dict[type(elem)] = elem
cmp = True
for obj1 in type_dict.keys():
for obj2 in type_dict.keys():
try:
type_dict.get(obj1) > type_dict.get(obj2)
except TypeError:
cmp = False
break
if not cmp:
break
if cmp:
print('Objects in list are comparable.')
else:
print('Objects in list are not comparable.')
只是出于好奇,是否有一种更简洁的方法可以通过 python 内置或库来执行此操作?
白板的微信
千万里不及你
相关分类