猿问

如何检查给定的对象列表中每种不同类型的对象是否具有可比性?

作为防御性编程的一种手段,我实现了一段相当简单的代码来检查传递给我的函数的给定列表的所有元素(不同类型)是否可以通过比较运算符(有一个或所有实施的丰富比较方法)。


我对此的看法是迭代列表并编目可用类型以及字典中每个对象的单个实例,然后运行字典的键,将每个选定的对象相互比较以查看它们是否返回布尔值或引发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 内置或库来执行此操作?


阿晨1998
浏览 105回答 2
2回答

白板的微信

您所要做的就是尝试对列表进行排序。try:    sorted(list_of_elements)    print('Objects in list are comparable.')except TypeError:    print('Objects in list are not comparable.')

千万里不及你

我不确定我是否正确理解你的问题,但我认为你可以做一些相当简单的事情,例如:def check_type(test) :  for i in test :    if type(test[i])!=type(test[0]) :      return False  return True
随时随地看视频慕课网APP

相关分类

Python
我要回答