获取lis中的最高价值卡

2024-03-29 12:05:32 发布

您现在位置: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

有没有更好的办法?你知道吗

谢谢


Tags: infor字典排序情况cardshandrank
1条回答
网友
1楼 · 发布于 2024-03-29 12:05:32

您可以使用max内置函数和自定义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]])

相关问题 更多 >