0

次のようなリストがあります。

['Ivan Connolly,50', 'Claudia Zingaro,50', 'Jeffie Honaker,50', 'Floria Rozar,49', 'Hyun Castleberry,48', 'Invalid Name,48', 'Cristi Authement,47', 'Yadira Millwood,47', 'Invalid Name,46']

数字は生徒のテストの点数を表しています。sorted() 関数を使用して学生ランキングでリストを並べ替えたいと考えています。タイ ブレーカーはアルファベット順の名前です。私はこの機能にあまり詳しくないので、助けていただければ幸いです。=)

4

3 に答える 3

1

機能を使用できsort(key=...)ます。

これを試して:

L = ['Ivan Connolly,50', 'Claudia Zingaro,50', 'Jeffie Honaker,50', 'Floria Rozar,49', 'Hyun Castleberry,48', 'Invalid Name,48', 'Cristi Authement,47', 'Yadira Millwood,47', 'Invalid Name,46']
L.sort(key=lambda x:int(x.split(',')[1]))

出力:

['Invalid Name,46', 'Cristi Authement,47', 'Yadira Millwood,47', 'Hyun Castleberry,48', 'Invalid Name,48', 'Floria Rozar,49', 'Ivan Connolly,50', 'Claudia Zingaro,50', 'Jeffie Honaker,50']

シンプルで明確です。

于 2013-08-21T10:25:57.607 に答える
0

で始まります:

L = ['Ivan Connolly,50', 'Claudia Zingaro,50', 'Jeffie Honaker,50', 'Floria Rozar,49', 'Hyun Castleberry,48', 'Invalid Name,48', 'Cristi Authement,47', 'Yadira Millwood,47', 'Invalid Name,46']

複数のキーで並べ替えるには、まず、「セカンダリ」キーを希望する順序で並べ替えます。たとえば、大文字と小文字を区別せずにアルファベット順に並べます。

L.sort(key=str.lower)

私たちに与えます:

['Claudia Zingaro,50', 'Cristi Authement,47', 'Floria Rozar,49', 'Hyun Castleberry,48', 'Invalid Name,46', 'Invalid Name,48', 'Ivan Connolly,50', 'Jeffie Honaker,50', 'Yadira Millwood,47']

次に、スコア フィールドを降順に並べ替えます。

L.sort(key=lambda L: int(L.rpartition(',')[2]), reverse=True)

これによりL、次の最終結果が得られます。

['Claudia Zingaro,50', 'Ivan Connolly,50', 'Jeffie Honaker,50', 'Floria Rozar,49', 'Hyun Castleberry,48', 'Invalid Name,48', 'Cristi Authement,47', 'Yadira Millwood,47', 'Invalid Name,46']
于 2013-08-21T11:05:48.187 に答える