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
有没有人有任何想法?提前谢谢
答案 0 :(得分: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)