[英]Change position of elements in a list so they cross match another list in Python
我有兩個包含電子郵件的列表:
masterlist = ['email1@email.com', 'email2@email.com', 'email3@email.com', 'email4@email.com']
sublist = ['email3@email.com', 'email4@email.com', 'email2@email.com', 'email1@email.com']
主列表是固定的,但應更改子列表的順序,以便主列表中的電子郵件與子列表中的電子郵件匹配,反之亦然。
例如,主列表中的 email1 分配給子列表中的 email3,因此子列表中的 email1 也應該與主列表中的 email3 具有相同的 position。
所需的子列表:
sublist_ordered = ['email3@email.com', 'email4@email.com', 'email1@email.com', 'email2@email.com']
我正在考慮使用索引來獲取索引列表,但我不知道如何進行索引。
order = [0, 1, 3, 2]
ordered_list = [sublist[i] for i in order]
我認為你可以通過排序來做到這一點:
sublist_ordered = sorted(sublist, key=lambda x: masterlist.index(x))
我想我找到了解決方案:
masterlist = ['email1@email.com', 'email2@email.com', 'email3@email.com', 'email4@email.com']
sublist = ['email3@email.com', 'email4@email.com', 'email2@email.com', 'email1@email.com']
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]
Output:
['email1@email.com', 'email2@email.com', 'email3@email.com', 'email4@email.com']
['email4@email.com', 'email3@email.com', 'email2@email.com', 'email1@email.com']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.