TypeError: __init__() got an unexpected keyword argument 'cmp'
时间: 2023-12-07 11:03:27 浏览: 75
这个错误通常是由于在Python 3中使用了Python 2中已弃用的cmp参数而导致的。在Python 3中,sort()和sorted()函数不再支持cmp参数。相反,您可以使用key参数来指定一个函数,该函数将用于从每个列表元素中提取一个键,并根据这些键对元素进行排序。如果您正在使用自定义类,则可以在类中定义__lt__()方法来指定对象之间的比较方式。以下是一些解决此错误的方法:
1.如果您正在使用sort()或sorted()函数,请确保不使用cmp参数。相反,使用key参数来指定一个函数,该函数将用于从每个列表元素中提取一个键,并根据这些键对元素进行排序。例如:
```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list, key=lambda x: -x)
print(sorted_list) # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
2.如果您正在使用自定义类,请确保在类中定义__lt__()方法来指定对象之间的比较方式。例如:
```python
class MyClass:
def __init__(self, value):
self.value = value
def __lt__(self, other):
return self.value < other.value
my_list = [MyClass(3), MyClass(1), MyClass(4), MyClass(1), MyClass(5)]
sorted_list = sorted(my_list)
for obj in sorted_list:
print(obj.value, end=' ') # 输出:1 1 3 4 5
```
3.如果您正在使用其他库或框架,请查看其文档以了解如何正确使用它们的排序函数。
阅读全文