[英]sort string list by another string list python
所以我有 2 個列表。
list1 是我試圖重新創建的訂單的列表。
list2 是無序列表。
如何以與 list1 相同的順序排列 list2?
list1 = [
"loaded_sound,sfx/weapon/smg/type100/fire",
"loaded_sound,sfx/weapon/smg/type100/foley",
"loaded_sound,sfx/weapon/special/bouncing_betty",
"loaded_sound,sfx/weapon/special/flame_thrower/foley",
"loaded_sound,sfx/weapon/special/molotov",
"loaded_sound,sfx/weapon/special/ptrs/fire",
"loaded_sound,sfx/weapon/special/satchel_charge",
"loaded_sound,sfx/weapon/tank/kingtiger/fire",
"loaded_sound,sfx/weapon/tank/ringoffs",
"loaded_sound,sfx/weapon/tank/sherman/fire",
"loaded_sound,sfx/weapon/tank/tank_reload/foley",
"loaded_sound,sfx/weapon/tank/tank_reload",
"loaded_sound,sfx/weapon/tesla/bounce",
"loaded_sound,sfx/weapon/tesla",
"loaded_sound,sfx/weapon/uber",
"loaded_sound,stream/music/mission/zombie",
"loaded_sound,voiceovers/zombie/ann",
"loaded_sound,voiceovers/zombie/monkey/explo_vox",
"loaded_sound,voiceovers/zombie/monkey/groan",
"loaded_sound,voiceovers/zombie/monkey",
"loaded_sound,voiceovers/zombie/monkey/raise_vox",
"loaded_sound,voiceovers/zombie/pa"
]
list2 = [
"loaded_sound,sfx/weapon/smg/type100/fire",
"loaded_sound,voiceovers/zombie/pa",
"loaded_sound,sfx/weapon/smg/type100/foley",
"loaded_sound,voiceovers/zombie/monkey/raise_vox",
"loaded_sound,sfx/weapon/special/bouncing_betty",
"loaded_sound,sfx/weapon/special/flame_thrower/foley",
"loaded_sound,voiceovers/zombie/monkey",
"loaded_sound,voiceovers/zombie/monkey/groan",
"loaded_sound,sfx/weapon/special/molotov",
"loaded_sound,voiceovers/zombie/monkey/explo_vox",
"loaded_sound,sfx/weapon/special/ptrs/fire",
"loaded_sound,voiceovers/zombie/ann",
"loaded_sound,sfx/weapon/special/satchel_charge",
"loaded_sound,stream/music/mission/zombie",
"loaded_sound,sfx/weapon/tank/kingtiger/fire",
"loaded_sound,sfx/weapon/uber",
"loaded_sound,sfx/weapon/tank/ringoffs",
"loaded_sound,sfx/weapon/tesla",
"loaded_sound,sfx/weapon/tank/sherman/fire",
"loaded_sound,sfx/weapon/tesla/bounce",
"loaded_sound,sfx/weapon/tank/tank_reload/foley",
"loaded_sound,sfx/weapon/tank/tank_reload",
]
_newList = []
# sort list2 in same order as list 1
for i in list1:
_line_ = i
for j in list2:
if j == _line_:
_newList.append(j)
但這所做的只是照原樣重新創建 list2。 它沒有重新安排任何東西。
排序list2
時,您可以使用list1
中的索引作為鍵。
如果列表很長,最好創建一個返回索引的字典,而不是搜索每個。
list1_dict = {val: i for i, val in enumerate(list1)}
list2.sort(key = lambda x: list1_dict.get(x, -1))
如果list2
中有任何不在list1
中的元素,這會將它們排序到開頭。
我建議您使用以下單行樣式代碼:
list2 = [i for i in list1 if i in list2]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.