老女仆纸牌游戏

时间:2016-10-29 08:44:54

标签: python-3.x

image of question and code

我正在尝试写一个旧的女仆卡片游戏。现在我到了删除对的阶段,所以如果有相同的数字(2-10)和相同的字母(AKQJ),删除它们。我写了几行代码,但它不起作用。你能告诉我为什么并帮助我解决它。

如何识别不同套装的相同号码并在同一列表中删除它们?

def x(alist):
    n = '2345678910AKJQ'
    a=[]
    b=[]
    for i in alist:
      j = ''.join([k for k in i if k in n])
      if not j in b:
        a.append(i)
        b.append(j)
    return a

1 个答案:

答案 0 :(得分:0)

创建一个创建列表的默认字典,根据最后一个字符拆分项目(我使用标准字母而不是符号),然后用只有1个值的键组成listcomp。

import re
from collections import defaultdict

deck = ['10H','AS','AH','4C','4S','5D']


dd = defaultdict(list)

for d in deck:
   dd[d[:-1]].append(d[-1])

print([k for k,v in dd.items() if len(v)==1])

结果:

['5', '10']