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

如何使类数据可排序

如何使类数据可排序

跃然一笑 2021-03-08 08:10:46
这肯定是重复的,但是说我有一个如下的类:class MyObj(object):    def __init__(self, *args, **kwargs):        self._data = [2, 1, 3]        self._more_data = [False, True, False]如何使它可排序,而不是针对其他MyObj对象(我可以对它进行排序__lt__),而是在内部进行排序?因此,如果我打电话给sorted(my_obj_instance)我,我得到的数据如下:self._data = [1,2,3]self._more_data [True, False, False]即,_data按数字排序,而_more_data已相应排序。
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

sorted() 从不修改原始数据。为了使其与自定义对象一起使用,您必须实现__iter__(返回例如iter(self._data))-但这只会为您提供该对象的排序版本,并且既不会修改原始对象,也不会对两个列表都进行排序。

您想要的是一种sort()称为的方法yourobj.sort()。然后,此方法将.sort()使用key您希望它们排序的方式的适当参数调用列表。


查看完整回答
反对 回复 2021-03-30
?
扬帆大鱼

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

您不能使sortedreturn类的实例。 sorted总是返回一个列表。如果将其设为迭代器,则可以sorted返回类数据的排序版本(作为列表)。但是,仅给您的类一个sort对数据进行排序的方法可能会更简单。


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号