在Python中改变一个列表中元素的位置,使它们与另一个列表交叉匹配。

问题描述 投票:0回答:1

我有两个邮件列表。

masterlist = ['[email protected]', '[email protected]', '[email protected]', '[email protected]']
sublist = ['[email protected]', '[email protected]', '[email protected]', '[email protected]']

主列表是固定的,但子列表的顺序应该改变,以便主列表的邮件与子列表的邮件匹配,反之亦然。

例如,主列表中的email1被分配给子列表中的email3,因此子列表中的email1也应该和主列表中的email3有相同的位置。

所希望的子列表。

sublist_ordered = ['[email protected]', '[email protected]', '[email protected]', '[email protected]']

我想利用索引来获得一个索引列表,但我不知道如何进行索引。

order = [0, 1, 3, 2]
ordered_list = [sublist[i] for i in order]
python list indices
1个回答
0
投票

我想你可以通过排序来实现这个功能。

sublist_ordered = sorted(sublist, key=lambda x: masterlist.index(x))

0
投票

我想我找到了一个解决方案。

masterlist = ['[email protected]', '[email protected]', '[email protected]', '[email protected]']
sublist = ['[email protected]', '[email protected]', '[email protected]', '[email protected]']

order = []

for i in range(len(masterlist)):
    mastermail = masterlist[i]
    order.append(sublist.index(mastermail))

order.reverse()

sublist_ordered = [sublist[i] for i in order]

输出:

['[email protected]', '[email protected]', '[email protected]', '[email protected]']
['[email protected]', '[email protected]', '[email protected]', '[email protected]']
© www.soinside.com 2019 - 2024. All rights reserved.