【发布时间】:2018-01-04 18:37:15
【问题描述】:
我怎样才能用西装对“cardsListObj”进行排序然后排名?
我已经完成了类似“print (cardsListObj.sort (key = card.getRank))”之类的操作,但它没有用,我有“None”。
实际上,我在另一个与此完全相同的代码上执行了此操作(在我看来是新手)并且有效。 (该代码大约有 300 行,所以我没有在这里发布它)
class card :
def __init__ (self, rank, suit) :
self.rank = rank # cards numbers
self.suit = suit # cards characters Diamonds, Clubs, Hearts, Spades
def getRank (self):
return self.rank
def getSuit (self):
return self.suit
def main():
cards = open (input ("file? "))
cardsListObj = []
for i in cards:
cardObj = card (i.split () [0], i.split () [1])
cardsListObj.append (cardObj)
输入文件是一个txt文件,每行有一个数字和一个卡片名称,用空格分隔。
提前致谢
【问题讨论】:
-
您是否在做类似
print(cardsListObj.sort(...之类的事情?.sort()返回 None,它的实际输出是对您调用它的列表的修改。您需要单独的print(cardsListObj)才能查看排序列表。 -
谢谢,我明白了“无”的意义,但是使用 print (cardsListObj) 可以通过定义的键给我排序对象的位置。我也在寻找一种在排序后按对象属性查看列表的方法。 (有可能吗?)
-
我不确定我是否理解您的要求,但也许您需要在您的类上定义
__str__()和__repr()__方法,以便其实例打印您想要的方式,而不是“ ". -
对不起,如果我的问题看起来很奇怪或难以理解,我是编程初学者。每个对象都有一个等级和西装,我正在寻找的是,[1,5,7,8,10] 如果我要按等级打印排序列表,以及 ["club", "club" , "diamond","heart", "spade"] 如果 getSuit 是排序键。
-
试试
list(card.getRank() for card in cardsListObj)- 这就是所谓的“列表理解”。
标签: list python-3.x class sorting