Python:解析以下内容的最佳方法

2024-06-16 10:51:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一串像这样的扑克手:

AA:1,KK:1,AK:1,AQ:0.5,AJs:1个,ATs:1台,... 在

手后面的数字代表0-100%的重量。然后我把它转换成一本能读懂手的重量的字典。问题是,如果两只手的重量相同,我会把AKs和AKo变成AK。所以我需要一些方法把AK:1变成AKs:1和AKo:1和摆脱AK:1

现在我有了只处理手部而不是重量的代码:

def parse_preflop_hand(hand):
if len(hand) < 3 and hand[0] != hand[1]:  #this avoids pairs like AA and hands like AKs
    new_hand = hand + 's' + ', ' + hand + 'o'
else:
    new_hand = hand
return new_hand

这将AK转换为AKs,AKo,但当我将其添加到一个列表中时,它会被添加为一个条目而不是两个单独的条目。它也将原来的手留在列表中。在

  1. 如何将其拆分为两个单独的项目时,附加到一个列表?在
  2. 怎样才能最有效地摆脱原来的手?在
  3. 我从文本或csv文件中导入信息,将其转换为列表或字典是否会使事情更简单?任何其他的想法都值得赞赏。在

Tags: and列表new字典条目akslikeaa
1条回答
网友
1楼 · 发布于 2024-06-16 10:51:01

你在用Python3吗?要实现这一点,最微小的改变可能是:

def parse_preflop_hand(hand):
    if len(hand) < 3 and hand[0] != hand[1]:
        parsed_hand = [hand + 's', hand + 'o']
    else:
        parsed_hand = [hand]
    yield from parsed_hand

然后在主代码中执行以下操作:

^{pr2}$

对我来说,整个代码可能是:

# note this is different from the minimal change above
def parse_preflop_hand(hand, value):
    if len(hand) < 3 and hand[0] != hand[1]:
        return {hand + 's': value, hand+'o': value}
    else:
        return {hand: value}

final_dict = {}
for token in handstring.split(','):
    for unparsed_hand, value in token.split(":"):
        final_dict.update(parse_preflop_hand(unparsed_hand))

相关问题 更多 >