Trier les chaînes à l'aide du tri de base de tri par base

L'opération de cette partie du code consiste à trier les chaînes d'une liste par ordre alphabétique, tout comme le tri des mots dans un dictionnaire. Voici un exemple:

input = ['jkttsszzo', 'zie', 'iukddrjdba', 'bwjahzwiv', 'yslzvnjdjg', 'xkm', 'aszcnljjl', 'syniimbq', 'hqgyd', 'itvis']

output = ['aszcnljjl', 'bwjahzwiv', 'hqgyd', 'itvis', 'iukddrjdba', 'jkttsszzo', 'syniimbq', 'xkm', 'yslzvnjdjg', 'zie']

L'entrée est la liste de mots avant le tri et la sortie est la liste de mots après le tri.

Le code global est le suivant:

#这里是生成26个小写字母的程序
char_list = [chr(x) for x in range(97,123)]  
print(char_list)

word_list=[]# 利用程序自动生成一个Word列表,开始设置为空
for i in range(10): # 定义生成的word的数量
    word = ''
    length = random.randint(3,10)  # 每个生成的Word包含的字符的数量是3到10之间的随机数,这个可以任意设定
    for j in range(length ):
        word = word + chr( random.randint(97,122) )
    word_list.append(word)

print(word_list)

def sort_word_list(word_list):
    max_length = len(word_list[0])
    for i in range(1,len(word_list)):#获得这个列表中最长的字符串的长度
        if len(word_list[i]) > max_length:
            max_length = len( word_list[i] )
    print(max_length)

    for i in range(max_length):

        bucket = {}
        for x in char_list:
            bucket[x] = []


        for x in word_list:
            if len(x)<max_length: # 如果某个word的长度小于最长的字符串的长度,那么就在结尾处增加'z'补足长度 ,比如apple 变为 applezzzzz
                temp_word = x + "z"*(max_length - len( x ))
            else:
                temp_word = x
            bucket[temp_word[max_length - i - 1]].append(x)

        index = 0
        for k in char_list:
            if (len(bucket[k])) != 0:
                for y in bucket[k]:
                    word_list[index] = y
                    index = index + 1

    print(word_list)


sort_word_list(word_list)

Les commentaires sont essentiellement expliqués dans le code.

Je suppose que tu aimes

Origine blog.csdn.net/t20134297/article/details/108149879
conseillé
Classement