python 按照花色和数字给纸牌排序,并去除重复项

法一:
用列表

def Hua(s):
    if s[:2]=="黑桃":
        return 1
    if s[:2]=="红桃":
        return 2
    if s[:2]=="梅花":
        return 3
    if s[:2]=="方块":
        return 4
def Shu(s):
    if s[2:]=='A':
        return  14
    elif s[2:]=='K':
        return  13
    elif s[2:]=='Q':
        return  12
    elif s[2:]=='J':
        return  11
    else:
        return int(s[2:])
def DS(L):
    for e in L:
        for i in range(1,L.count(e)):
            L.remove(e)
def m():
    L = ['梅花A', '方块4', '梅花2', '方块4', '红桃7', '黑桃Q', '红桃K', '梅花9', '方块9', '红桃5', '梅花J', '方块8', '红桃5', '黑桃3', '黑桃10',
         '黑桃3', '红桃7', '黑桃Q']
    L.sort(key=Hua)
    l=[]
    i=0
    j=0
    p = ["黑桃", "红桃", "梅花", "方块"]
    for k in range(4):
        i=j
        while j<int(len(L)) and p[k] in L[j]:
            j=j+1
        s=L[i:j]
        s.sort(key=Shu,reverse=True)
        l=l+s
    DS(l)
    print(l)
m()

法二:

def Bh(s):
    p = ["黑桃", "红桃", "梅花", "方块"]
    a=''
    for i in range(4):
        if s[0:2]==p[i]:
            if s[2:] == '10':
                a = str(i) + '10'
            elif  s[2:]<=str(9) and s[2:]>str(0):
                a=str(i)+'0'+s[2:]
                print(a)
            elif s[2:]=='A':
                a=str(i)+'14'
            elif s[2:]=='K':
                a=str(i)+'13'
            elif s[2:] =='Q':
                a = str(i) + '12'
            elif s[2:]=='J':
                a=str(i)+'11'
    return a
def m():
    L = ['梅花A','梅花10', '方块4', '梅花2', '方块4', '红桃7', '黑桃Q', '红桃K', '梅花9', '方块9', '红桃5', '梅花J', '方块8', '红桃5', '黑桃3', '黑桃10', '黑桃3','红桃7', '黑桃Q']
    l=list(set(L))
    l.sort(key=Bh)
    print(l)
m()

注意字符串可以进行比较,是按位进行比较的

s1='10'
s2='2'
print(s1<s2)#True

法三:
用map

L= ['梅花A', '方块4', '梅花2', '方块4', '红桃7', '黑桃Q', '红桃K', '梅花9', '方块9', '红桃5', '梅花J', '方块8', '红桃5', '黑桃3', '黑桃10', '黑桃3',
     '红桃7', '黑桃Q']
Hua={'黑桃':4,'红桃':3,'梅花':2,'方块':1}
shu={'A':14,'K':13,'Q':12,'J':11,'10':10,'9':9,'8':8,'7':7,'6':6,'5':5,'4':4,'3':3,'2':2,'1':1}
L.sort(key=lambda k:(Hua[k[0:2]],shu[k[2:]]),reverse=True)
print(L)
d={}
d=d.fromkeys(L)#去除重复元素
L1=list(d.keys())
print(L1)
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值