Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以不同的方式使用排序函数的方法?_Python_List_Sorting - Fatal编程技术网

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

Python 以不同的方式使用排序函数的方法?,python,list,sorting,Python,List,Sorting,我正在使用python3创建一个扑克游戏,为了对双手进行排序,我正在这样做: C

我正在使用python3创建一个扑克游戏,为了对双手进行排序,我正在这样做:

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不清楚这是否是需要的。