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,但是当我将它附加到列表时,它会作为一个项目添加,而不是两个单独的项目。它还将原始手留在列表中。
- 如何在附加到列表时将其拆分为两个单独的项目?
- 摆脱原手最有效的方法是什么?
- 我从文本文件或 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))
我有一串看起来像这样的扑克牌:
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,但是当我将它附加到列表时,它会作为一个项目添加,而不是两个单独的项目。它还将原始手留在列表中。
- 如何在附加到列表时将其拆分为两个单独的项目?
- 摆脱原手最有效的方法是什么?
- 我从文本文件或 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))