1. 程式人生 > >python的具名元組和sorted函式

python的具名元組和sorted函式

 1 import collections
 2 Card = collections.namedtuple('Card', ['rank', 'suit'])
 3 #定義一個具名元組 第一個引數是元組的名字,第二個引數是一個欄位名組成的列表
 4 #Card._fields 獲取欄位名的列表
 5 #Card._make(_data) 例項化一個具名元組 _data一個和fields長度相同的一個元組
 6 #Card._asdict() 獲得一個字典欄位名 == 值
 7 
 8 class FrenchDeck(object):
 9     ranks = [str(n) for n in
range(2, 11)] + list('JQKA') #獲取所有牌列表2--A 10 suits = 'spades diamonds clubs hearts'.split() #獲取花色列表 11 12 def __init__(self): 13 self._cards = [Card(rank, suit) for suit in self.suits 14 for rank in self.ranks] #獲取組合列表 15 16 def __len__(self): 17 return
len(self._cards) 18 19 def __getitem__(self, position): 20 return self._cards[position] 21 22 23 beer_card = Card('7', 'diamonds') #得到一個花色為diamonds,數值為7的牌 24 print(beer_card) 25 deck = FrenchDeck() 26 print(deck) #獲取52張牌的集合 27 print(deck[0]) #列印第一張牌 28 suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
29 def spades_high(card): 30 rank_value = FrenchDeck.ranks.index(card.rank) #獲取數值排序 31 return rank_value * len(suit_values) + suit_values[card.suit] #返回數值+花色的排序 32 33 for card in sorted(deck, key=spades_high): # 對卡牌做排序 然後迴圈 34 print(card) 35 36 37 38 # sorted方法: 39 sorted(deck,key=spades_high,reverse=True) 40 # deck可迭代物件 41 # reverse引數 排序規則為True是逆序 42 # key一個函式,函式的引數是deck中被迭代的值