83794


下記のリストがあるとします

[code]

    list_1 = "abcabcabcabc"
    list_2 = ["b", "a", "a", "c", "b"]
    
[/code]

list_2の要素をlist_1の要素順に並べるにはどのように  
行えばよろしいでしょうか？

下記のように出力したいです。

[code]

    # 目的の出力
    output = ["a", "b", "c", "a", "c"]
    
[/code]

お分かりの方がいましたら教えて頂きたいです。  
よろしくお願い致します。


CC BY-SA 4.0
2021-11-24T13:59:58.893
83791
2021-11-25T00:11:30.783
47752
question
python
list内の要素並び替え

[code]

    list_1 = "abcabcabcabc"
    list_2 = ["b", "a", "a", "c", "b"]
    
    p = {i: 0 for i in {*list_1}}
    order = [(i:=list_1.index(x, p[x])+1) and p.update({x: i}) or i for x in list_2]
    output = [v for _, v in sorted(zip(order, list_2), key=lambda x: x[0])]
    
    print(output)
    
    #
    ['a', 'b', 'c', 'a', 'b']
    
[/code]


CC BY-SA 4.0
2021-11-24T20:49:03.340
83792
2021-11-24T20:49:03.340
47127
83791
answer


list_1の値が、list_2にも存在すれば、outputに追加するという形でやってみました。

[code]

    list_1 = "abcabcabcabc"
    list_2 = ["b", "a", "a", "c", "b"]
    
    output = []
    
    for num in list_1:
        if num in list_2:
            list_2.remove(num)
            output.append(num)
            
    print(output)
    
[/code]


CC BY-SA 4.0
2021-11-25T00:11:30.783
83794
2021-11-25T00:11:30.783
40856
83791
answer