Python 根据具有匹配模式的另一个列表中的值对列表进行排序

Python sort list based on values in another list with matching pattern

我有一个列表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 中的模式。

创建一个中间列表并在这个新列表中对 l1 的元素进行排序 list.You 可以使用两个嵌套的 for 循环 this.Then 清除 l1 并将新列表复制到 l1.I 已显示下面是我在 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']

这应该适合你

sorted_L1 = sorted(L1, key=lambda x: 12 * int(x[2:].split('_')[0]) + L2.index(x[:3]))