import collections
from random import choice
Card = collections.namedtuple("Card", ["rank", "suit"])
class FrenchDeck:
ranks = [str(n) for n in range(2,11)] + list("JQKA")
suits = "spades diamonds clubas hearts".split()
def __init__(self):
self._cards = [Card(rank, suit) for suit in self.suits
for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
deck = FrenchDeck()
suit_values = dict(spades=3, diamonds=1, clubas=0, hearts=2)
def spades_high(card):
rank_value = FrenchDeck.ranks.index(card.rank)
return rank_value * len(suit_values) + suit_values[card.suit]
for card in sorted(deck, key=spades_high):
print card
sorted(deck, key=spades_high)详解:
deck 运行 __len__ 然后循环deck 里面的值 传给spades_high 当值 sortd 会根据函数spades_high返回的值的大小进行排序