背景
我想反向排序但不严格按字典顺序排序,然后它变得更加奇怪..:P
原因是专有软件完全按照我在此处描述的方式解析目录,并且我想复制该行为。
要求(按此顺序)
- 两者:python2和python3兼容
- 反向词典
- 最短公共优先
示例数据
以下是该 python 脚本的(随机排序的)输入数据示例:
IA-test-PROD-me
ia-test-prod-me
ia-test-me-staging
ia-test-me
ia-test-STAGING-me
IA-test-me
IA-test-me-staging
ia-test-me-prod
IA-test-me-STAGING
IA-test-me-prod
IA-test-me-PROD
IA-test-STAGING-me
它应该是什么样子
我将它存储在一个列表中,并且需要对其进行排序,使其看起来像这样:
ia-test-me
ia-test-prod-me
ia-test-me-staging
ia-test-me-prod
ia-test-STAGING-me
IA-test-me
IA-test-me-staging
IA-test-me-prod
IA-test-me-STAGING
IA-test-me-PROD
IA-test-STAGING-me
IA-test-PROD-me
代码
根据我的理解sort()
并且sorted()
是按字典顺序排序的稳定函数。但是由于我需要满足上述所有要求,所以我被困在了 atm ..
def sortLexo(input_list):
words = input_list.split()
words.sort(reverse=True)
for i in words:
print(i)
问题是sort()
+reverse=True
单独是不够的,因为它不满足上述要求 3(最短优先):
<-------------. should be placed here
ia-test-prod-me |
ia-test-me-staging /|\
ia-test-me-prod |
ia-test-me -------> wrong
ia-test-STAGING-me
<--------------- should be placed here
IA-test-me-staging |
IA-test-me-prod /|\
IA-test-me-STAGING |
IA-test-me-PROD |
IA-test-me --------> wrong
IA-test-STAGING-me
IA-test-PROD-me
我玩过groupby
按长度排序,但我一无所获(我的 python kl 没那么深).. :(
我想对于具有良好 python 知识的人来说,这非常容易做到。任何帮助表示赞赏!