Для создания моей игры в покер я отрисую «Руку» как список объектов card
.
Например, ['AC', '3D', '4S', 'KH', 'TC']
представляет объект hand
, и каждый элемент списка является объектом card
.Сопоставление строк с целыми числами в Python
Я хочу ранжировать карты в руке в порядке убывания их важности в игре.
i.e 'A' > 'K' > ....(so on)... > '2'
Я ищу сопоставление ранга каждой карты с соответствующим значением.
Для приведенного выше примера, переписка будет [14, 13, 10, 4, 3]
У меня есть следующие функции, чтобы сделать это для меня:
def mapper(ranks):
mapping = {
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9,
'T': 10,
'J': 11,
'Q': 12,
'K': 13,
'A': 14
}
new_ranks = [mapping[rank] for rank in ranks]
return new_ranks
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = [r for r,s in cards]
return sorted(mapper(ranks), reverse=True)
Эти функции работают нормально, но я не считаю их достаточно Pythonic.
Я хотел бы знать, как эффективно выполнять это сопоставление (возможно, используя функцию map
).
[CodeReview.SE] может быть лучшее место для этого. – Ryan