gpt4 book ai didi

python - 如何修复 'TypeError: invalid keyword argument for sort()'

转载 作者:行者123 更新时间:2023-11-28 20:55:17 26 4
gpt4 key购买 nike

使用 compare_points 函数对二维点列表进行排序。

我不明白如何将 compare_points 函数传递给 sort() 方法。

def compare_points( p, q ):
if p[0] < q[0] or (p[0] == q[0] and p[1] < q[1]):
return -1
elif p[0] > q[0] or (p[0] == q[0] and p[1] > q[1]):
return 1
else:
return 0

#print(compare_points( [1,3], [5,6])) # outputs -1
#print(compare_points( [1,3], [1,6])) # ouputs -1
#print(compare_points( [1,3], [1,3])) # outputs 0
#print(compare_points( [1,3], [0,3])) # outputs 1


L = [ [5,8], [5,2], [12, 3], [1,3], [10,2], [12,1], [12,3] ]
L.sort(cmp=compare_points)
print(L)

实际结果:

L.sort(cmp=compare_points)
builtins.TypeError: 'cmp' is an invalid keyword argument for sort()

预期结果:

L = [ [1,3], [5,2], [5,8], [10,2], [12,1], [12,3], [12,3] ]

最佳答案

实际上根本不需要在这里指定键,因为您在这里定义的基本上只是字典顺序,这是 Python 中列表排序的标准方式。

因此,您可以指定键进行排序,例如:

>>> L = [ [5,8], [5,2], [12, 3], [1,3], [10,2], [12,1], [12,3] ]
>>> L.sort()
>>> L
[[1, 3], [5, 2], [5, 8], [10, 2], [12, 1], [12, 3], [12, 3]]

, .sort(..)函数确实可以采用 cmp=... 参数,该参数是两个值之间的比较器。自 , 这个parameter has been removed .

使用键排序更有效,因为它避免了您实现无效的比较函数:比较函数应该是自反反对称传递。一些比较函数不满足这些条件。

关于python - 如何修复 'TypeError: invalid keyword argument for sort()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125779/

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