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]))
我有一个列表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]))