如何将第一个字母按特定顺序排列,第二个字母按其他特定顺序排列

2024-10-02 08:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在想,当前两个字母都要按特定的顺序排列时,如何对列表进行排序。 基本上这是我的代码:

Rank = '34567890JQKA2'
Rank2 = 'DCHS'
def sort(words):
  words.sort(key=lambda x: Rank.index(x[0]))
  words.sort(key=lambda x: Rank2.index(x[1]))
return [words]
print(sort['9C', '9H', '8H', '9D'])

它的输出是按升序排列的,所以

>>> ['8H','9D','9C','9H']

第4行将第一个字母按顺序排序,但不知道如何将第二个字母按顺序排序


Tags: lambdakey代码列表indexreturn排序顺序
2条回答

可以在lambda中设置多个参数进行排序

例如:

Rank = '34567890JQKA2'
Rank2 = 'DCHS'
def sort_func(words):
    words.sort(key=lambda x: (Rank.index(x[0]), Rank2.index(x[1])))
    return words

print(sort_func(['9C', '9H', '8H', '9D']))

输出:

['8H', '9D', '9C', '9H']

sort的键不需要是单个值—如果它是多个值(在tuplelist中),它们将按顺序考虑

这里有一个方法,它甚至不限制你两个字符:

ranks = ['34567890JQKA2', 'DCHS']

data = ['9C', '9H', '8H', '9D']
data.sort(key=lambda x: [r.index(c) for r, c in zip(ranks, x)])
print(data)

相关问题 更多 >

    热门问题