我正在使用python3创建一个扑克游戏,并按照我的方式对其进行排序:
C < D < H < S
和2 < 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']
。
我正在使用排序函数来执行此操作,是否有任何方法可以自定义排序函数的工作方式并使其成为不按字母顺序但不是数字的字母?我在这里不知所措...... = /
答案 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)