我正在创建一个德州扑克的简化程序,我正在尝试创建一个基于卡片级别构建字典的函数。
例如,如果我有:
H1: [6c, 2c, 6d, 6h, 2h, 6s, 3s]
H2: [6c, 2c, 6d, 6h, 2h, 3s, Ad]
我希望得到一些看起来像的东西:
当我为{2: [2c, 2h], 3: [3s], 6: [6c, 6d, 6h, 6s]}
调用我的函数时H1
所以我想拿7张牌并根据排名建立一本字典。在这种情况下,我正在寻找四种类型。
答案 0 :(得分:3)
In [51]: import operator
In [52]: import itertools as IT
In [53]: H1 = ['6c', '2c', '6d', '6h', '2h', '6s', '3s']
In [54]: {rank:list(group) for rank, group in IT.groupby(sorted(H1), key=operator.itemgetter(slice(None, -1)))}
Out[54]: {'2': ['2c', '2h'], '3': ['3s'], '6': ['6c', '6d', '6h', '6s']}
或
In [65]: {rank:list(group) for rank, group in IT.groupby(sorted(H1), key=lambda card: card[:-1])}
Out[65]: {'2': ['2c', '2h'], '3': ['3s'], '6': ['6c', '6d', '6h', '6s']}
请注意,如果十个俱乐部由'10c'
代表,那么要剥离等级,您需要operator.itemgetter(slice(None, -1))
。另一方面,如果您使用'tc'
代表十个俱乐部,那么operator.itemgetter(0)
就足够了。