2016-11-25 5 views
1

と別の配列に基づいて配列を並べ替える私はこのような配列を持っている特別な要件

order = ['c','e','a','b'] 

ので、最終的な答えは次のようになります。

['cc','ee','aa','bb','dd','ff'] 

問題は、項目が順配列でない場合、それは最後まで行くだろうということです、と私はそれを行うするかどうかはわかりません。

これにどのようにアプローチしますか?私が試した:

master.sort(key=lambda x: order.index(x)) 

しかしxorder配列ではない場合には、たとえば'dd'のために、クラッシュしますと

答えて

1

master = ['aa','bb','cc','dd','ee','ff'] 
order = 'ceab' 
trantab = str.maketrans(order, 'abcdefghijklmnopqrstuvwxyz'[:len(order)]) 
master.sort(key=lambda x: x.translate(trantab)) 

あなたの期待に応じて、ため 'FECD' のような値で次のように、あなたはまた、変換テーブルを作成することができます。

trantab = str.maketrans(order, ''.join(sorted(order))) 

。 .. 'a'と 'b'を 'f'の前にソートしておく。

関連する問題