我有一个列表L1
:
['Apr21_Dzr', 'Aug20_Dzr', 'Dec20_Dzr',
'Nov20_Dzr', 'Oct20_Dzr', 'Sep20_Dzr']
我还有另一个主列表,L2
:
['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May']
我想对列表进行排序L1
以获取以下内容:
['Aug20_Dzr', 'Sep20_Dzr', 'Oct20_Dzr', 'Nov20_Dzr', 'Dec20_Dzr', 'Apr21_Dzr']
即对L1
进行排序,使其遵循列表L2
中的模式。
这应该适合你
sorted_L1 = sorted(L1, key=lambda x: 12 * int(x[2:].split('_')[0]) + L2.index(x[:3]))
创建一个中间列表,并在此新列表中对 l1 的元素进行排序。为此,您可以使用两个嵌套的 for 循环。然后清除 l1 并将新列表复制到 l1。我在下面展示了我如何在我的 python shell 中做到这一点。
>>> new_list=[]
>>> for element in l2:
for data in l1:
if data[:3] == element:
new_list.append(data)
>>> print(new_list)
['Aug20_Dzr', 'Sep20_Dzr', 'Oct20_Dzr', 'Nov20_Dzr', 'Dec20_Dzr', 'Apr21_Dzr']
>>> l1.clear()
>>> l1 = new_list.copy()
>>> print(l1)
['Aug20_Dzr', 'Sep20_Dzr', 'Oct20_Dzr', 'Nov20_Dzr', 'Dec20_Dzr', 'Apr21_Dzr']