如何按特定顺序和其他特定顺序分类第一个字母



我一直在试图弄清楚在前两个字母以特定顺序排列时如何对列表进行排序。所以基本上这是我的代码:

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行按顺序排列第一个字母,但不知道如何将第二个字母分类。

您可以将lambda中的多个参数设置为排序。

ex:

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)

相关内容

最新更新