我有一串扑克牌,看起来像这样:
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变成AK,AKo,但是当我将它附加到列表时,它会被添加为一个项而不是两个单独的项。它还将原始手留在列表中。
答案 0 :(得分:1)
您使用的是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))