Python 以不同的方式使用排序函数的方法?
我正在使用python3创建一个扑克游戏,为了对双手进行排序,我正在这样做:Python 以不同的方式使用排序函数的方法?,python,list,sorting,Python,List,Sorting,我正在使用python3创建一个扑克游戏,为了对双手进行排序,我正在这样做: C
C和2<3<4<5<6<7<8<9
输出如下所示:
分类手:['D5','DA','DT','HA','SQ']
但我需要它看起来像:
分类手:['D5','DT','DA','HA','SQ']
我正在使用排序函数来实现这一点,是否有任何方法可以自定义排序函数的工作方式,使其不按字母顺序而是按数字顺序接收字母?我在这里不知所措=/
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']
输出
['D5', 'DT', 'DA', 'HA', 'SQ']
输出
['D5', 'DT', 'DA', 'HA', 'SQ']
输出
['D5', 'DT', 'DA', 'HA', 'SQ']
只是@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)
只是@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)
只是@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)
只是@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)
如果我理解正确,您可能会说*13
,这样CA
(排序值:12)就不会出现在D2
(排序值:10)之后。@cHao Good catch:)修复了它。谢谢:)使用lambda函数是我最初的猜测,但我一直忘了索引部分,否则我的第一个猜测非常相似><谢谢!现在还不能投票,但如果我可以,你肯定会得到它。如果我理解正确,你可能会说*13
,这样CA
(排序值:12)就不会出现在D2
(排序值:10)之后。@cHao Good catch:)修复了它。谢谢:)使用lambda函数是我最初的猜测,但我一直忘了索引部分,否则我的第一个猜测非常相似><谢谢!现在还不能投票,但如果我可以,你肯定会得到它。如果我理解正确,你可能会说*13
,这样CA
(排序值:12)就不会出现在D2
(排序值:10)之后。@cHao Good catch:)修复了它。谢谢:)使用lambda函数是我最初的猜测,但我一直忘了索引部分,否则我的第一个猜测非常相似><谢谢!现在还不能投票,但如果我可以,你肯定会得到它。如果我理解正确,你可能会说*13
,这样CA
(排序值:12)就不会出现在D2
(排序值:10)之后。@cHao Good catch:)修复了它。谢谢:)使用lambda函数是我最初的猜测,但我一直忘了索引部分,否则我的第一个猜测非常相似><谢谢!现在还不能投票,但如果我可以的话,你肯定会得到它。字典中的.get
方法存在于你的return语句中的逻辑:return value\u lookup.get(value,int(value))
。还可能返回一个元组,如(suit,value\u lookup.get(value,int(value))
,这样suit顺序是一致的,但是从OP中不清楚这是否是需要的。字典的.get
方法只用于返回语句中的逻辑:返回值\u lookup.get(value,int(value))
。还可能返回类似于(suit,value\u lookup.get(value,int(value))
的元组,这样suit顺序是一致的,但是从OP中不清楚这是否是需要的。字典的.get
方法存在于您的return语句中的逻辑:return value\u lookup.get(value,int(value))
。还可能返回类似于(suit,value\u lookup.get(value,int(value))
的元组,这样suit顺序是一致的,但是从OP中不清楚这是否是需要的。字典的.get
方法存在于您的return语句中的逻辑:return value\u lookup.get(value,int(value))
。还可能返回类似于(suit,value\u lookup.get(value,int(value))
的元组,这样suit顺序是一致的,但是OP不清楚这是否是需要的。