我正在创建一个程序来操作我的MTG卡集合(Geek,我知道),其中我正在上传我的集合的csv文件并尝试使用这些集合中的各个卡的对象创建各个集合的对象。所有的卡都有不同的属性,因为它们将包含我拥有的每张卡的数量,但是有很多具有相同名称的卡,但不在同一组中。我试图了解执行此任务的最简单方法是什么,如果我在一个集合中创建一个卡的实例,如果我为另一个集创建一个具有相同名称的实例,它是否会被删除/覆盖。或者只是更容易(更有意义)创建和对象的集合,并为各个卡片制作一个词典列表。
这是我到目前为止所拥有的:
import csv
class CardSet:
def __init__(self, set_name):
self.set_name = set_name
def get_set(self):
return self.set_name
def add_card(card_name, card_num, amount, numb_foil, signed):
cards = []
card_name = Card(card_name, card_num, amount, numb_foil, signed)
cards.append(card_name)
return cards
class Card:
def __init__(self, card_name, card_num, amount, numb_foil, signed):
self.card_name = card_name
self.card_num = card_num
self.amount = amount
self.numb_foil = numb_foil
self.signed = signed
def csv_reader():
# upload csv file
cards = csv.reader(open('Collection.csv', 'rt', encoding='utf8'))
list_sets = [] # keeps a tally of set names, as to not duplicate set objects
list_obj_sets = [] # list of set objects to search through
# Make a list of individual sets in collection, then make an instance of that card set
# row[2] = Card Name, row[4] = card number, row[0] = amount owned, row[6] = foil owned, row[7] = signed
for row in cards:
# if set object does not exist, create object and add card to set
if row[3] not in list_sets: # row[3] contains set name
list_sets.append(row[3])
row[3] = CardSet(row[3]) # create set object
list_obj_sets.append(row[3])
row[3].add_card(row[2], row[4], row[0], row[6], row[7]) # create card object
else:
# if set object exists, add card to set
for sets in list_obj_sets: # find set object
if sets.set_name == row[3]:
sets.add_card(row[2], row[4], row[0], row[6], row[7]) # create card object
csv_reader()
感谢您的帮助。 -pyRN