为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2023-12-09 15:46:06
作为防御性编程的一种手段,我实现了一段相当简单的代码来检查传递给我的函数的给定列表的所有元素(不同类型)是否可以通过比较运算符(有一个或所有实施的丰富比较方法)。我对此的看法是迭代列表并编目可用类型以及字典中每个对象的单个实例,然后运行字典的键,将每个选定的对象相互比较以查看它们是否返回布尔值或引发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.')


查看完整回答
反对 回复 2023-12-09
?
千万里不及你

TA贡献1784条经验 获得超9个赞

我不确定我是否正确理解你的问题,但我认为你可以做一些相当简单的事情,例如:


def check_type(test) :

  for i in test :

    if type(test[i])!=type(test[0]) :

      return False

  return True


查看完整回答
反对 回复 2023-12-09
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信