Python 排序比较器

问题描述 投票:0回答:1

我正在尝试按照元组指示的子字符串的字典顺序对元组列表进行排序。

在下面的例子中,我希望对实际上代表[“sd”,“dce”,“ces”]的a进行排序。我不知道如何使用比较器来实现这一点。

def cmp(key, text):
    return text[key[0]:key[1]+1]

a = [(1,2), (2, 4), (3, 5)]
text = "asdcesa"
sorted(a, key=cmp(text))

上面的代码会给出此错误“cmp() 缺少 1 个必需的位置参数:'text'”

python sorting comparator
1个回答
0
投票

key=
函数必须只接受一个参数。你的需要两个参数,所以不能按原样工作。

有多种方法可以解决这个问题。这是一个。好的建议:在您成为专家之前(甚至之后),抵制尝试将所有内容压缩到一行中的诱惑。

text = "asdcesa"
def keyfunc(key, text=text):
    return text[key[0] : key[1]+1]

a = [(1,2), (2, 4), (3, 5)]
print(sorted(a, key=keyfunc))

# which displays
# [(3, 5), (2, 4), (1, 2)]
© www.soinside.com 2019 - 2024. All rights reserved.