2012-05-13 10 views
3

私はカードランクのソートシステムを作ろうとしており、その値は別の辞書から得られます。 52カードのシンプルなデッキでは、2つのエースランクがあります。この場合、0が10、Jが11、Qが12、Kが13、Aが14、2が15です。最大の評価ランク私がランクカードを並べ替える場合は、昇順番号システムでの順番に並び替えたいリストがあれば、どうすればいいですか?辞書値を含む要素でリストをソート

たとえば、リストは[3,5,9,7,J,K,2,0]です。リストを[3,5,7,9,0,J,K,2]にソートしたいとします。ナンバリングシステムの辞書を{'A': 14, 'K': 13, 'J': 11, 'Q': 12, '0': 10, '2': 15}としました。

THANKS

+0

どのようなコードがありますか? –

答えて

1

この答えは動作します:

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__) 

これはあまりにも行います。

sorted_list = sorted(unsorted_list, key = lambda k: your_dictionary[k]) 

ソート関数は第二引数を呼び出すには、最初の引数(ソートしたいオブジェクト)内の各エントリを使用しています。こうすることで、lamda関数は指定された項目の値を辞書から返し、並べ替えをキーとして使用できます。

リスト項目がyour_dictionary.keys()にない場合、これは機能しません。辞書を完成するか使用してください

sorted(unsorted_list, key = lambda k: your_dictionary[k] if k in your_dictionary.keys() else k) 
+2

'key = dictionary_you_wrote.get'と書くのはちょっとおかしいです。 –

+0

待ってください..." your_dictionary "セクションで、数字の値を取得するためのディクショナ?本当にありがとう! –

+0

申し訳ありませんが、数字 '3'は辞書のキーではないため、KeyErrorが存在するため、これは機能しません。ソートされていないリストの要素が辞書にない場合は、どのように除外しますか? –

0

は、すでに

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

を試してみましたか?

関連する問題