gpt4 book ai didi

python - Python 中的自定义排序复杂字符串

转载 作者:行者123 更新时间:2023-11-30 23:29:33 25 4
gpt4 key购买 nike

我有一个符合以下模式的文件名列表:s[num][alpha1][alpha2]​​.ext

我需要排序,首先按数字,然后按 alpha1,然后按 alpha2。然而,最后两个不是按字母顺序排列的,而是应该反射(reflect)自定义顺序。

我创建了两个列表来表示 alpha1 和 alpha2 的顺序,如下所示:

alpha1Order = ["Fizz", "Buzz", "Ipsum", "Dolor", "Lorem"]
alpha2Order = ["Sit", "Amet", "Test"]

最好的方法是什么?我的第一个想法是(以某种方式)标记化,以便将每个文件名分成其组成部分(s、num、alpha1、alpha2),然后排序,但我不太确定如何执行如此复杂的排序。使用关键功能似乎很笨拙,因为这种类型似乎不适合简​​单的排序。

最佳答案

一旦标记化,您的数据就可以通过 key 函数完美订购。只需返回该值的 alpha1Orderalpha2Order 列表的索引即可。将它们替换为字典以使查找更容易:

alpha1Order = {token: i for i, token in enumerate(alpha1Order)}
alpha2Order = {token: i for i, token in enumerate(alpha2Order)}

def keyfunction(filename):
num, alpha1, alpha2 = tokenize(filename)
return int(num), alpha1Order[alpha1], alpha2Order[alpha2]

这将返回一个要排序的元组; Python 将使用第一个值进行排序,将具有相同 int(num) 值的任何内容按第二个条目排序,使用第三个值来打破与前两个条目相关的任何值。

关于python - Python 中的自定义排序复杂字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21119628/

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