我看到你的问题有两种解释:
- 排序
a,然后排序b,然后将子列表交错在一起:
In [14]: a=[['abc',2, 'cde'],
....: ['xyz',5, 'fgh']]
In [15]: b=[['abc', 'lmn', 2],
....: ['xyz','opq',5]]
In [16]: a.sort(key=operator.itemgetter(1))
In [17]: b.sort(key=operator.itemgetter(2))
In [18]: result = [list(i) for i in zip(a,b)]
In [19]: result
Out[19]:
[[['abc', 2, 'cde'], ['abc', 'lmn', 2]],
[['xyz', 5, 'fgh'], ['xyz', 'opq', 5]]]
- 修改
a和b,将它们相加,排序结果,取消修改结果:
在[20]中:a=[['abc',2,'cde'],
['xyz',5, 'fgh']]
In [21]: b=[['abc', 'lmn', 2],
['xyz','opq',5]]
In [22]: a = [[0]+i for i in a]
In [23]: b = [[1]+i for i in b]
In [24]: result = sorted(a+b, key=lambda s: s[3] if s[0] else s[2])
In [25]: result
Out[25]:
[[0, 'abc', 2, 'cde'],
[1, 'abc', 'lmn', 2],
[0, 'xyz', 5, 'fgh'],
[1, 'xyz', 'opq', 5]]
In [26]: result = [s[1:] for s in sorted(a+b, key=lambda s: s[3] if s[0] else s[2])]
In [27]: result
Out[27]: [['abc', 2, 'cde'], ['abc', 'lmn', 2], ['xyz', 5, 'fgh'], ['xyz', 'opq', 5]]