suit_values = dict(spades = 3, hearts = 2, diamonds = 1, clubs = 0)
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_value):
print card
实话实说,一开始我看到这段代码的时候是懵的。在另一位大佬的帮助下,我总算明白了。
下面是对这段代码的剖析,如有纰漏,恭迎各位斧正!
我们从函数内部开始看:
第一句:
rank_value = FrenchDeck.ranks.index(card.rank)
在实例deck里面,每一个元素都是一个tuple,我们获取这个tuple的属性rank,即得到了扑克牌的点数。然后用index函数得到了点数在FrenchDeck.ranks中对应的索引,并将其作为扑克牌排序的依据之一赋值给rank_value。这也便是上面这段代码所实现的功能。
第二句:
return rank_value * len(suit_values) + suit_values[card.suit]
这个排序依据的含义:
suit_values[card.suit]对应的就是花色在suit_v