2016-10-29 5 views
0

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 

答えて

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']