我一直想弄清楚当前两个字母都以特定顺序排列时如何对列表进行排序。 所以基本上这是我的代码:
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行对第一个字母进行排序,但不知道如何将第二个字母排序。
答案 0 :(得分: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']
答案 1 :(得分:0)
sort
的键不必是单个值-如果它是多个值(在tuple
或list
中),则会按顺序考虑。< / p>
这是一种甚至不将您限制为两个字符的方法:
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)