gpt4 book ai didi

python - Python 3.x 中的错误排序 : TypeError: must use keyword argument for key function

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:11 25 4
gpt4 key购买 nike

在 python 2.x 中,当我传递一个函数时,SORT 运行良好。切换到 python 3.x .. sort 已经改变,但我不明白我必须如何修改代码以使其在 python 3 中也能工作。如果我不传递一个函数,一切正常,但是当我传递一个函数时,我得到错误:TypeError: must use keyword argument for key function

我应该怎么改....

A = [8, 89]
A = [str(c) for c in A]
def my_cmp(a,b):
return cmp(int(b+a), int(a+b))
A.sort(my_cmp)
print(A)

最佳答案

  1. cmp不再是 Python 3 中的有效内置函数,但您可以模拟它。

  2. sort在 Python 3 中的工作方式不同,但您可以使用 cmp_to_key翻译旧的 Python 2 风格排序。您必须导入 functools使用 cmp_to_key

The functools.cmp_to_key() utility is available to convert a 2.x style cmp function to a key function.

  1. 您必须在 Python 3 排序方法中使用 key 关键字参数

这是一个示例实现:

from functools import cmp_to_key   # required for cmp_to_key

def cmp(v1, v2): # emulate cmp from Python 2
if (v1 < v2):
return -1
elif (v1 == v2):
return 0
elif (v1 > v2):
return 1

A = [8, 89]
A = [str(c) for c in A]

def my_cmp(a, b):
return cmp(int(b + a), int(a + b))

A.sort(key = cmp_to_key(my_cmp)) # use cmp_to_key to emulate Python 2 behavior
print(A)

输出与 Python 2 输出完全相同:

['89', '8']

关于python - Python 3.x 中的错误排序 : TypeError: must use keyword argument for key function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359647/

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