
我正在试着写一个古老的女佣卡游戏。现在我到了删除对的阶段,所以如果有相同的数字(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发布于 2016-10-29 16:50:12
创建一个默认字典,创建一个列表,根据最后一个字符拆分条目(我使用的是标准字母,而不是符号),并使用键组成一个只有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']https://stackoverflow.com/questions/40317446
复制相似问题