如何自定义排序一副纸牌的字符串列表?
我正在用 python 制作一个纸牌游戏,由 3 个机器人和一个玩家组成。一副 52 张牌随机分布并存储在 4 个单独的列表中,每张列表 13 张。
bot1 = ['H5', 'CJ', 'C4', 'D7', 'H10', 'S4', 'HQ', 'C9', 'DA', 'S8', 'CQ', 'CA', 'CK']
bot2 = ['H4', 'S5', 'C6', 'H8', 'S3', 'D5', 'H2', 'S10', 'SJ', 'HA', 'H7', 'SA', 'HK']
bot3 = ['D8', 'SQ', 'D4', 'D2', 'DJ', 'DK', 'D9', 'DQ', 'HJ', 'SK', 'S2', 'S7', 'C3']
player = ['C5', 'H3', 'D10', 'C10', 'S6', 'D3', 'C8', 'H9', 'C7', 'C2', 'S9', 'H6', 'D6']
在这里,H5 代表红心 5,DJ 代表钻石小丑,SA 代表黑桃 A 等等。但是,我想按照卡片的值的顺序对这些字符串列表进行排序,即 A > K > Q > J > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2 例如,在排序之后bot1 列表看起来像
bot1 = ['DA', 'CA', 'CK', 'CQ', 'HQ', 'CJ', 'H10', 'C9', 'S8', 'D7', 'H5', 'C4', 'S4']
可以以这种方式排序吗?如果是,那么如何?
回答
例如,您可以获取在字符串中排序的值,然后使用该列表中的索引对卡片集进行排序
bot1 = ['H5', 'CJ', 'C4', 'D7', 'H10', 'S4', 'HQ', 'C9', 'DA', 'S8', 'CQ', 'CA', 'CK']
order = 'AKQJ1098765432'
bot1 = sorted(bot1, key=lambda x: order.index(x[1:]))