在列表中获得最高价值的卡

时间:2016-05-24 02:35:04

标签: python

我有一张名单:

    hand = ["KC", "QC", "4C", "0S"]

我总是希望在排名方面获得最高的牌,就像在此列表中一样

    rank_cards = ["2", "3", "4", "5", "6", "7", "8", "9", "0", "J", "Q", "K", "A"]

这种情况下最高的牌是:

    "KC"

我怎么能为我得到的任何一只手做到这一点?

我正在考虑使用字典按照索引对卡进行排名,如下所示:

    d = {}
    for i, c in enumerate(rank_cards):
        d[c] = i

有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用key内置函数并使用自定义>>> max(hand, key=lambda c: rank_cards.index(c[0])) 'KC' 函数。

>>> hand.sort(key=lambda c: rank_cards.index(c[0]), reverse=True)

如果您想根据等级

按降序对整个手进行排序
>>> rank_cards_map = {c: i for i, c in enumerate(rank_cards)}
>>> max(hand, key=lambda c: rank_cards_map[c[0]])

如果您希望通过预先计算索引(基本上是您的解决方案,但在字典理解中排成一行)稍微提高性能。

{{1}}