【发布时间】:2018-06-15 05:38:34
【问题描述】:
假设我有一个像这样的数据集('test.csv'):
Name,Fruit,Price
John,Apple,1.00
Steve,Apple,1.00
John,Mango,2.00
Adam,Apple,1.00
Steve,Banana,1.00
虽然有几种更简单的方法可以做到这一点,但我想在 python 中将这些信息组织为一个类。因此,理想情况下,类的实例应如下所示:
{'name': 'John', 'Fruits': ['Apple','Mango'], 'Price':[1.00, 2.00]}
我将数据集加载到类中的方法是将每个实例存储在一个列表中。
class org(object):
def __init__(self,name,fruit,price):
self.name = name
self.fruit = [fruit]
self.price = [price]
classes = []
with open('test.csv') as f:
for line in f:
if not 'Name' in line:
linesp=line.rstrip().split(',')
name = linesp[0]
fruit = linesp[1]
price = linesp[2]
inst = org(name,fruit,price)
classes.append(inst)
for c in classes:
print (c.__dict__)
在这种情况下,我如何知道“John”是否已经作为实例存在?
如果是这样,我如何更新“John”?使用类方法?
@classmethod
def update(cls, value):
cls.fruit.append(fruit)
【问题讨论】:
-
这不是您所要求的,但可以根据您的需要进行修改:Creating a singleton。在您的情况下,您并不完全想要“只有一个实例”(单例),但您确实想要“每种类型只有一个实例”,所以看看这些想法是否有帮助
-
你愿意使用字典而不是列表吗?
-
您确实需要修复缩进。您发布的代码非常难以阅读,并且不是有效的 Python。