这肯定是重复的,但是说我有一个类如下:
class MyObj(object):
def __init__(self, *args, **kwargs):
self._data = [2, 1, 3]
self._more_data = [False, True, False]
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它可以排序,而不是与其他MyObj对象(我可以用它做__lt__),但在内部?所以如果我打电话给sorted(my_obj_instance)我得到一个包含以下数据的版本:
self._data = [1,2,3]
self._more_data [True, False, False]
Run Code Online (Sandbox Code Playgroud)
也就是说,_data按数字排序,_more_data已相应排序.
sorted() 永远不会修改原始数据.为了使它能够使用你必须实现的自定义对象__iter__(例如返回iter(self._data)) - 但这只会给你一个该对象的排序版本,既不修改原始对象也不对两个列表进行排序.
你想要的是一种sort()你称之为的方法yourobj.sort().然后,此方法将.sort()使用适当的key参数调用列表,以便按需要对它们进行排序.
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |