3

カードランクを使用して並べ替えシステムを作成しようとしていますが、それらの値は別の辞書から取得されます。52枚のカードの単純なデッキでは、2からエースのランクがあります。この場合、0が10、Jが11、Qが12、Kが13、Aが14、2が15で、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}

ありがとう

4

2 に答える 2

1

この答えは機能します:

    sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

これもそうです:

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

ソートされた関数は、最初の引数(ソートするオブジェクト)の各エントリを使用して、2番目の引数を呼び出します。このようにして、lamda関数はディクショナリから指定されたアイテムの値を返し、sortedはそれをキーとして使用できます。

your_dictionary.keys()にリストエントリがない場合、これは機能しません。辞書に記入するか、

    sorted(unsorted_list, key = lambda k: your_dictionary[k] if k in your_dictionary.keys() else k)
于 2012-05-13T09:12:15.313 に答える
0

すでに試しましたか

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

于 2012-05-13T07:10:25.647 に答える