4

私はリスト["Tue", "Wed", "Mon", "Thu", "Fri"]としてリストを持っています、私はそれをとして作りたいです ["Mon", "Tue", "Wed", "Thu", "Fri"]

これを並べ替える方法は?

4

3 に答える 3

12

あまり効率的ではありませんが、順序のリストがある場合は、それらが含まれているはずです...

>>> m = ["Mon", "Tue", "Wed", "Thu", "Fri"]
>>> n = ["Tue", "Wed", "Mon", "Thu", "Fri", "Tue", "Mon", "Fri"]
>>> sorted(n, key=m.index)
['Mon', 'Mon', 'Tue', 'Tue', 'Wed', 'Thu', 'Fri', 'Fri']

nにない特定の値が存在する場合、これは例外をスローすることに注意してくださいm

または、名前をキー、順序を値としてdictに入れ、キーとして使用key=your_dict.getします...次のようになります。

>>> d = {name:val for val, name in enumerate(m)}
>>> d
{'Fri': 4, 'Thu': 3, 'Wed': 2, 'Mon': 0, 'Tue': 1}
>>> sorted(n, key=d.get)
['Mon', 'Mon', 'Tue', 'Tue', 'Wed', 'Thu', 'Fri', 'Fri']

これは例外をスローしません(ソートしようとするとエラーが発生するPy3.xを除くNone)が、パーシャルを使用して、デフォルトの前後にソートするか、またはの同等の動作を取得することができlist.indexますkey=d.__getitem__。似ている

于 2012-12-12T16:44:07.037 に答える
2

月曜日のすべてのインスタンスを検索して1に置き換え、火曜日を2に置き換えます。並べ替え、再割り当てします。

于 2012-12-12T16:42:39.553 に答える
0

http://wiki.python.org/moin/HowTo/Sorting/

あなたは語彙のソートを探しています。学習問題として、独自の関数を作成することも興味深いです;)

編集:わかりました。必要なのは、1日、その曜日の週番号を返す関数だけです。関数で日文字列の配列を使用し、次に日週番号を使用してボスのような要素を並べ替えることができます。

于 2012-12-12T16:29:51.547 に答える