作为防御性编程的一种手段,我实现了一段相当简单的代码来检查传递给我的函数的给定列表的所有元素(不同类型)是否可以通过比较运算符(有一个或所有实施的丰富比较方法)。我对此的看法是迭代列表并编目可用类型以及字典中每个对象的单个实例,然后运行字典的键,将每个选定的对象相互比较以查看它们是否返回布尔值或引发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)] = elemcmp = Truefor 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: breakif cmp: print('Objects in list are comparable.')else: print('Objects in list are not comparable.')只是出于好奇,是否有一种更简洁的方法可以通过 python 内置或库来执行此操作?
2 回答
白板的微信
TA贡献1883条经验 获得超3个赞
您所要做的就是尝试对列表进行排序。
try:
sorted(list_of_elements)
print('Objects in list are comparable.')
except TypeError:
print('Objects in list are not comparable.')
千万里不及你
TA贡献1784条经验 获得超9个赞
我不确定我是否正确理解你的问题,但我认为你可以做一些相当简单的事情,例如:
def check_type(test) :
for i in test :
if type(test[i])!=type(test[0]) :
return False
return True
添加回答
举报
0/150
提交
取消