这部分的代码实现的操作是,对一个列表里面的字符串按照字母顺序排序,就像字典里面的单词排序一样,举例子如下:
input = ['jkttsszzo', 'zie', 'iukddrjdba', 'bwjahzwiv', 'yslzvnjdjg', 'xkm', 'aszcnljjl', 'syniimbq', 'hqgyd', 'itvis']
output = ['aszcnljjl', 'bwjahzwiv', 'hqgyd', 'itvis', 'iukddrjdba', 'jkttsszzo', 'syniimbq', 'xkm', 'yslzvnjdjg', 'zie']
input是排序之前的Word列表,output是排序之后的Word列表。
整体代码如下所示:
#这里是生成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)
注释基本上都在代码中进行了讲解。