0
a=[(' ', '000'), ('\n', '001000'), ('v', '00100100'), ('O', '0010010100'),('e', '110'), ('n', '1110'), ('r', '1111')]

我想首先按数字的长度对列表进行排序,然后对具有相同数字长度的所有字符的字母顺序进行排序。我试图按 for 循环排序,但它只是对我的数字长度进行排序,而不是按字母顺序排序。

a=[(' ', '000'), ('\n', '001000'), ('v', '00100100'), ('O', '0010010100'),('e', '110'), ('n', '1110'), ('r', '1111')]
for i in range (len(a)):
    for j in range(1,len(a)):
        if len(a[i][1])>len(a[j][1]):
            swap = a[i]
            a[i]=a[j]
            a[j]=swap

有人有什么主意吗 ???提前致谢

4

1 回答 1

4

使用key参数sort

a.sort(key=lambda item: (len(item[1]), item[0]))

或者更详细地说:

def sort_func(item):
    return len(item[1]), item[0]

a.sort(key=sort_func)
于 2013-04-29T06:03:06.633 回答