我将扑克牌中的牌表示为字母(小写和大写),以便有效地存储它们。我现在基本上需要一个自定义排序函数来允许使用它们进行计算。
使用Python对字母进行排序的最快方法是什么
['a', 'n', 'A', 'N', 'b', 'o', ....., 'Z']
作为排名而不是
['A', 'B', 'C', 'D', 'E', 'F', ....., 'z']
哪个是默认值?
注意,这种排序源自:
import string
c = string.letters[:13]
d = string.letters[13:26]
h = string.letters[26:39]
s = string.letters[39:]
'a' = 2 of clubs
'n' = 2 of diamonds
'A' = 2 of hearts
'N' = 2 of spades
etc
最佳答案
您可以提供 key
function到 sorted
时,将为迭代中的每个元素调用此函数,并且返回值将代替元素值用于排序。
在这种情况下,它可能类似于以下内容:
order = ['a', 'n', 'A', 'N', 'b', 'o', ....., 'Z']
sorted_list = sorted(some_list, key=order.index)
这里有一个简短的例子来说明这一点:
>>> order = ['a', 'n', 'A', 'N']
>>> sorted(['A', 'n', 'N', 'a'], key=order.index)
['a', 'n', 'A', 'N']
请注意,为了提高效率,您可能需要对 key
函数使用字典查找,而不是 order.index
,例如:
order = ['a', 'n', 'A', 'N', 'b', 'o', ....., 'Z']
order_dict = {x: i for i, x in enumerate(order)}
sorted_list = sorted(some_list, key=order_dict.get)
关于python - 更改 Python 中的排序方式(与字母数字不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940218/