首页 > 解决方案 > Python排序列表基于另一个列表中具有匹配模式的值

问题描述

我有一个清单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

标签: python-3.8

解决方案


创建一个中间列表并在这个新列表中对 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']

推荐阅读