按单词和单词中的字符对单词列表进行排序

时间:2021-02-21 22:02:14

标签: python python-3.x list-comprehension

在不使用 .sort()sorted() 的情况下,我想通过将每个字符转换为数字,对单词中的字符进行排序,然后对单词进行排序来对列表中的每个单词进行排序。我觉得我已经在这里尝试了一切。我知道我需要将它们转换为小写,然后使用 ord(letter) - 96 获得 3, 26261, 122, 211, 134, 2, 31, 22626, 218, 912,然后对每个“组”进行排序,然后将每个组转换回字符串。

输入:c zzA aBb bAa Acd B CA zzz ZR IL
输出:abb acd b baa c ca il zr zza zzz

2 个答案:

答案 0 :(得分:2)

你应该这样做:

a = ["c", "zzA", "aBb", "bAa", "Acd", "B", "CA", "zzz", "ZR", "I"]
b = sorted([i.lower() for i in a])

print(b)
# ['abb', 'acd', 'b', 'baa', 'c', 'ca', 'i', 'zr', 'zza', 'zzz']

答案 1 :(得分:0)

不使用排序功能。使用循环和冒泡排序

input_list = ['c','zzA','aBb','bAa','Acd','B','CA','zzz','ZR','IL']
for i in range(len(input_list)):
    for j in range (i+1,len(input_list)):
        if input_list[i].lower() > input_list[j].lower():
            input_list[i], input_list[j] = input_list[j], input_list[i]
print (input_list)

输出将是:

['aBb', 'Acd', 'B', 'bAa', 'c', 'CA', 'IL', 'ZR', 'zzA', 'zzz']

使用带有 key=str.lower 的排序功能

您也可以在不进行循环的情况下执行此操作。 list.sort(key=str.lower) 其中 list 是值列表。

>>> x = ['c','zzA','aBb','bAa','Acd','B','CA','zzz','ZR','IL']
>>> x=
['c', 'zzA', 'aBb', 'bAa', 'Acd', 'B', 'CA', 'zzz', 'ZR', 'IL']

>>> x.sort(key=str.lower)
>>> x
['aBb', 'Acd', 'B', 'bAa', 'c', 'CA', 'IL', 'ZR', 'zzA', 'zzz']