按 A1 B1 C1 顺序中的第一个元素对元组进行排序

问题描述 投票:0回答:1

我有两个列表,我正在尝试按 A1 B1 C1 对元组进行排序

l1 = ['F2', 'G2', 'B2', 'H2', 'A3', 'E3', 'G3', 'C1', 'D1', 'E1', 'D2', 'C3 ', 'A1'] l2 = [40, 40, 90, 90, 90, 90, 90, 120, 120, 120, 120, 120, 90]

代码

l1, l2 = [list(i) for i in zip(*sorted(zip(l1, l2), key=lambda x: list(map(int,x[0][1:]))))]

print (l1)
print (l2)

l1 = ['C1', 'D1', 'E1', 'A1', 'F2', 'G2', 'B2', 'H2', 'D2', 'A3', 'E3', 'G3 ', 'C3'] l2 = [120, 120, 120, 90, 40, 40, 90, 90, 120, 90, 90, 90, 120]

预期结果应该是: l1 = ['A1','C1','D1','E1','B2','D2','F2','G2','H2','A3','C3','E3' ,G3']

我迷路了。如有任何帮助,我们将不胜感激!

python sorting tuples
1个回答
0
投票

我不太确定你的代码想要做什么。我可以得到你想要的结果如下:

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']

您没有显示

l2
所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.