对扑克牌列表进行排序 [python]
Sort lists of list of playing cards [python]
我有一个列表列表,每个列表中有 3 张扑克牌,就像这样 -
[['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
我希望我的结果看起来像 -
[['Ad', 'Ks', '7s'], ['As', 'Qs', '7s'], ['Ac', '9d', '8s']]
注意:顺序是根据牌的等级来的。 AKQJT9...
我正在考虑使用这样的比较键
values=dict(zip('23456789TJQKA',range(2,15)))
然后通过遍历原始列表并在适当的点插入包含 3 张卡片的新列表来创建新列表。
有更好的方法吗?谢谢
Python 有一个内置的排序功能,但它在字符串之前对数字进行排序:
>>> cards = [['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
>>> sorted(cards)
[['Ac', '9d', '8s'], ['Ad', 'Ks', '7s'], ['As', 'Qs', '7s']]
你可以传递一个关键参数来解决这个问题:
>>> sorted(cards, key=lambda x: (x[0].isdigit(), x))
[['Ac', '9d', '8s'], ['Ad', 'Ks', '7s'], ['As', 'Qs', '7s']]
看看这个解释:
此代码应根据需要对卡片进行排序。
a= [['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
values=dict(zip('23456789TJQKA','abcdefghijklm'))
b=[[values[x[0]] for x in y] for y in a]
# b = [['m', 'k', 'f'], ['m', 'l', 'f'], ['m', 'h', 'g']]
c=[''.join(x) for x in b]
# c = ['mkf', 'mlf', 'mhg']
[x for _, x in sorted(zip(c, a), reverse=True)]
# x = [['Ad', 'Ks', '7s'], ['As', 'Qs', '7s'], ['Ac', '9d', '8s']]
我有一个列表列表,每个列表中有 3 张扑克牌,就像这样 -
[['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
我希望我的结果看起来像 -
[['Ad', 'Ks', '7s'], ['As', 'Qs', '7s'], ['Ac', '9d', '8s']]
注意:顺序是根据牌的等级来的。 AKQJT9...
我正在考虑使用这样的比较键
values=dict(zip('23456789TJQKA',range(2,15)))
然后通过遍历原始列表并在适当的点插入包含 3 张卡片的新列表来创建新列表。
有更好的方法吗?谢谢
Python 有一个内置的排序功能,但它在字符串之前对数字进行排序:
>>> cards = [['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
>>> sorted(cards)
[['Ac', '9d', '8s'], ['Ad', 'Ks', '7s'], ['As', 'Qs', '7s']]
你可以传递一个关键参数来解决这个问题:
>>> sorted(cards, key=lambda x: (x[0].isdigit(), x))
[['Ac', '9d', '8s'], ['Ad', 'Ks', '7s'], ['As', 'Qs', '7s']]
看看这个解释:
此代码应根据需要对卡片进行排序。
a= [['As', 'Qs', '7s'], ['Ad', 'Ks', '7s'], ['Ac', '9d', '8s']]
values=dict(zip('23456789TJQKA','abcdefghijklm'))
b=[[values[x[0]] for x in y] for y in a]
# b = [['m', 'k', 'f'], ['m', 'l', 'f'], ['m', 'h', 'g']]
c=[''.join(x) for x in b]
# c = ['mkf', 'mlf', 'mhg']
[x for _, x in sorted(zip(c, a), reverse=True)]
# x = [['Ad', 'Ks', '7s'], ['As', 'Qs', '7s'], ['Ac', '9d', '8s']]