class Customer:
def __init__(self,custid,name,addr,city,state,zipcode):
self.custid=custid
self.name=name
self.addr=addr
self.city=city
self.state=state
self.zipcode=zipcode
self.memberLevel=BasicMember()
self.monthlySpending =0
我能够读取一个文件,然后拆分它,使得在词典键中是我的customerid,值是客户对象。但我无法检索存储在词典中的每个对象的属性。如何从字典中获取每个对象属性。
for line in open('customers.dat','r'):
item=line.rstrip(',')
intput =line.split(',')
cc=Customer.Customer(*intput)
s2=item.split(',',1)[0]
d[s2]=[cc]
客户的样本数据是:
619738273,Admiral Ackbar,383 NeiMoidian Road,Utapau,MA,01720
118077058,Padme Amidala,846 Amani Road,D'Qar,MA,01508
360513913,Wedge Antilles,700 NeiMoidian Road,D'Qar,MA,01508
在将每个对象存储在字典中后输出为:
{'739118188': [<Customer.Customer object at 0x005FF8B0>],
'578148567': [<Customer.Customer object at 0x005FF9B0>]}
那么如何获取存储在字典中的对象的属性。
答案 0 :(得分:2)
我不确定你为什么把每个人都包在一个列表中,而只是像往常一样访问它们:
>>> d['619738273'][0].name
'Admiral Ackbar'
我建议不要将每个包装在列表中:
d[s2] = cc
然后您不需要[0]
:
>>> d['619738273'].name
'Admiral Ackbar'
您还可以简化解析步骤:
with open('customers.dat') as f:
for line in f:
k,*data = line.split(',')
d[k] = Customer.Customer(k, *data)
尽管使用csv
会更好,因为看起来您正在使用CSV文件:
import csv
with open('customers.dat') as f:
reader = csv.reader(f)
for k,*data in reader:
d[k] = Customer.Customer(k, *data)