我正在尝试写一个旧的女仆卡片游戏。现在我到了删除对的阶段,所以如果有相同的数字(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
答案 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']