检索存储在字典中的对象的属性

时间:2016-11-01 13:57:10

标签: python dictionary

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>]} 

那么如何获取存储在字典中的对象的属性。

1 个答案:

答案 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)