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中的模式。

这应该适合你

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

相关内容

  • 没有找到相关文章

最新更新