我真的不确定你的代码想做什么。我可以得到你想要的结果如下:
l1 = list(sorted(l1, key=lambda item: (item[1], item[0])))
print(l1)
输出
['A1', 'C1', 'D1', 'E1', 'B2', 'D2', 'F2', 'G2', 'H2', 'A3', 'C3', 'E3', 'G3']
注意:此解决方案仅适用于中的项
l1
长度是两个字符(
'A10'
不会被正确地排序)。
你没有表现出来
l2
在您想要的结果中。
使现代化
如果要同时对两个列表进行排序,可以按如下方式组合它们:
combined = zip(l1, l2)
combined = list(sorted(combined, key=lambda item: (item[0][1], item[0][0])))
print(combined)
输出
[('A1', 90), ('C1', 120), ('D1', 120), ('E1', 120), ('B2', 90), ('D2', 120), ('F2', 40), ('G2', 40), ('H2', 90), ('A3', 90), ('C3', 120), ('E3', 90), ('G3', 90)]
要解压缩组合结果,请使用以下语句:
l1_sorted = [item[0] for item in combined]
l2_sorted = [item[1] for item in combined]
您也可以使用zip函数进行解压缩,如前所述
here
.