gpt4 book ai didi

python - Python 类的 __key__ 参数

转载 作者:太空狗 更新时间:2023-10-29 22:09:49 24 4
gpt4 key购买 nike

我有一个向量数组,我想按长度对它们进行排序:

class Vector:

def __init__(self, x, y):
self.x, self.y = x, y

def __add__(a, b):
return Vector(a.x + b.x, a.y + b.y)

def __str__(a):
return str(a.x) + ' ' + str(a.y) + '\n'

def __key__(self):
return self.x * self.x + self.y * self.y


a = []
a.append(Vector(1,2))
a.append(Vector(1, 1))
a.sort()
print("".join(map(str,a)))

它说:“不可排序的类型:Vector() < Vector()”它要我创建 ltgt.. 方法。但是我想在不使用 cmp 的情况下进行排序。可能吗?

最佳答案

我会实现 __lt____eq__ 然后使用 functools.total_ordering类装饰器来获取其余的比较方法。

如果像这样排序向量没有意义,那么您总是可以只使用 key 关键字来 sort (或 sorted 就此而言):

mylist.sort(key = lambda v: v.x**2 + v.y**2)

关于python - Python 类的 __key__ 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com