我试图找出是否有办法查看一个列表中有多少对象(计数)在另一个列表中。
我有一张卡片。
class Card(object):
def __init__(self, number):
self.number = number
def __eq__(self, other):
return self.number == other.number
def getNumber(self, card):
return card.number
我有一个包含卡列表的类Deck。
class Deck(object):
def __init__(self):
self.cards = []
for i in range(11):
for j in range(i):
self.cards.append(Card(i))
我想知道我是否可以在甲板上获得卡的数量。
deck = Deck()
The deck contains 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10
cards = [Card(6), Card(5), Card(3)]
The cards are 6 5 3
我想知道牌组中有多少6,5和3。
答案 0 :(得分:2)
要计算单张卡片,请使用list.count():
for card in cards:
print(deck.cards.count(card))
要计算所有内容,请使用collections.Counter():
>>> from collections import Counter
>>> Counter(deck.cards)
Counter({Card(10): 10, Card(9): 9, Card(8): 8, Card(7): 7,
Card(6): 6, Card(5): 5, Card(4): 4, Card(3): 3,
Card(2): 2, Card(1): 1})
要使计数器正常工作,您需要通过添加 __ hash __()和 __ repr __() Card 类进行少量修改>方法:
class Card(object):
def __init__(self, number):
self.number = number
def __eq__(self, other):
return self.number == other.number
def __hash__(self):
return hash(self.number)
def getNumber(self, card):
return card.number
def __repr__(self):
return 'Card(%r)' % self.number
答案 1 :(得分:0)
您可以尝试:
print "Count for 6's: ", ListName.count(6)
同样适用于5和3:
print "Count for 5's: ", ListName.count(5)
print "Count for 3's: ", ListName.count(3)
答案 2 :(得分:0)
我认为你可以这样试试
>>> from collections import Counter
>>> deck1
['1', '2', '2', '3', '3', '3', '4', '4', '4', '4', '5', '5', '5', '5', '5',
'6', '6', '6', '6', '6', '6', '7', '7', '7', '7', '7', '7', '7', '8', '8',
'8', '8', '8', '8', '8', '8', '9', '9', '9', '9', '9', '9', '9', '9', '9',
'10', '10', '10', '10', '10', '10', '10', '10', '10', '10']
>>> Counter(deck1)
Counter({'10': 10, '9': 9, '8': 8, '7': 7, '6': 6, '5': 5, '4': 4, '3': 3,
'2': 2, '1': 1})