以不同方式使用排序函数的方法?

时间:2013-11-24 04:08:32

标签: python list sorting

我正在使用python3创建一个扑克游戏,并按照我的方式对其进行排序:

C < D < H < S2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q < K < A

输出如下:

Sorted Hand: ['D5', 'DA', 'DT', 'HA', 'SQ']

但我需要它看起来像:

Sorted Hand: ['D5', 'DT', 'DA', 'HA', 'SQ']

我正在使用排序函数来执行此操作,是否有任何方法可以自定义排序函数的工作方式并使其成为不按字母顺序但不是数字的字母?我在这里不知所措...... = /

2 个答案:

答案 0 :(得分:2)

k1, k2 = ['C','D','H','S'], ['2','3','4','5','6','7','8','9','T','J','Q','K','A']
data = ['D5','DA','DT','HA','SQ']
print sorted(data, key=lambda x: k1.index(x[0]) * 13 + k2.index(x[1]))

<强>输出

['D5', 'DT', 'DA', 'HA', 'SQ']

答案 1 :(得分:1)

只是@thefourtheye已经发布的变种

def customSort(card):

    suit, value = card
    value_lookup = {'T':10, 'J':11, 'Q':12, 'K':13, 'A':14}

    return value_lookup.get(value, int(value))

print sorted(['D5', 'DA', 'DT', 'HA', 'SQ'], key=customSort)