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

Python: Best way to parse the following

我有一串看起来像这样的扑克牌:

AA:1,KK:1,AK:1,AQ:0.5,AJs:1,ATs:1,...

手后的数字代表0-100%的权重。然后我将其转换成一本我可以读取手的重量的字典。问题是如果两只手的重量相同,我得到的数据会将 AK 和 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 文件导入信息,立即将其转换为列表或字典是否会使事情变得更容易?任何其他想法表示赞赏。

您在使用 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

然后在您的主要代码中,您将执行如下操作:

for parsed_hand in parse_preflop_hand(unparsed_hand):
    ...

整个代码对我来说大概是:

# 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))