0

次のコード形式の並べ替えを使用しています。

letters = '세븐일레븐'
old = [('세븐', 8), ('븐', 2), ('일', 5), ('레', 4)]
new = sorted(old, key=lambda x: letters.index(x[0]))

非ラテン文字の場合、出力は入力と同じです。

[('세븐', 8), ('븐', 2), ('일', 5), ('레', 4)]

私が期待しているのは:

[('세븐', 8), ('일', 5), ('레', 4), ('븐', 2)]
4

2 に答える 2

1

'일'の前にソートすることを期待するのはなぜ'븐'ですか? '븐'の 2 番目の文字ですlettersindex最初に見つかったインスタンスを返します。

目的が特定のシーケンスを異なる方法で扱うことである場合は、単一の flat ではなく、関心のある完全な文字列のlettersとして定義する必要があります。次に例を示します。liststr

letters = ['세븐', '일', '레', '븐']

その後、呼び出しは とは別のものとしてindex扱われ、期待される出力順序が得られます。'세븐''븐'

于 2016-03-14T23:54:32.560 に答える