python显示排名排序_Python,如何对对象列表进行排序?

I have a list of object that looks like this.

hand = [ Card(10, 'H'), Card(2,'h'), Card(12,'h'), Card(13, 'h'), Card(14, 'h') ]

Card(10, 'H) here is not a tuple, but an object. I know how to sort this list if each item in the list was in a form of tuple, like this,

hand = sorted(hand, key = lambda x: x[0])

but I have no idea how to sort a list of objects. I want to sort my list by the first input value, which is the number in Card()

How can I do this?

Edit: Here's the definition of Card().

class Card(object):

RANKS = (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)

SUITS = ('C', 'D', 'H', 'S')

def __init__(self, rank=12, suit='S'):

if (rank in Card.RANKS):

self.rank = rank

else:

self.rank = 12

if (suit in Card.SUITS):

self.suit = suit.upper()

else:

self.suit = 'S'

def __str__(self):

if (self.rank == 14):

rank = 'A'

elif (self.rank == 13):

rank = 'K'

elif (self.rank == 12):

rank = 'Q'

elif (self.rank == 11):

rank = 'J'

else:

rank = str(self.rank)

return rank + self.suit

def __eq__(self, other):

return (self.rank == other.rank)

def __ne__(self, other):

return (self.rank != other.rank)

def __lt__(self, other):

return (self.rank < other.rank)

def __le__(self, other):

return (self.rank <= other.rank)

def __gt__(self, other):

return (self.rank > other.rank)

def __ge__(self, other):

return (self.rank >= other.rank)

解决方案

The idea is still the same. Just that you will be looking for a specific attribute in the class object.

For your card class, you could do something like this:

hand = [ Card(10, 'H'), Card(2,'h'), Card(12,'h'), Card(13, 'h'), Card(14, 'h') ]

Then you could do

sorted_cards = sorted(hand, key=lambda x: x.rank)

The output looks something like this:

>>> [card.number for card in sorted_cards]

[2, 10, 12, 13, 14]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值