我正在动态创建一个包含汽车信息的数据结构。字典看起来像这样:
cars = {'toyota': {'prius': {'transmission':'automatic', 'mpg':30, 'misc':[]}}}
最外面的词典包含汽车品牌(丰田,宝马等),第二个词典包含模型(prius,m5等),内部词典包含汽车的细节。这是保存此信息的最佳方式吗?
我正在构建数据结构并访问它。我真的不能想到另一种方法,但代码看起来有点混乱:
cars['toyota'].setdefault('prius', {}).setdefault('misc', []).append('hello')
答案 0 :(得分:12)
正如贾斯汀所说,课程是理想的。
您可以轻松地执行以下操作:
class Car(object):
def __init__(self, make, model=None, trans=None, mpg=None, misc=None):
if make == 'Toyta' and model is None:
model = 'Prius'
self.make = make
self.model = model
self.transmission = trans
self.mpg = mpg
if misc is None:
self.misc = []
#other class stuff here
def __str__(self):
return "Make: {make} Model: {model} Mpg: {mpg}".format(make=self.make,
model=self.model,
mpg=self.mpg)
def __repr__(self):
return str(self)
cars = [Car('Toyota', 'Prius', 'Automatic', '30'),
Car('Mitsubishi', 'Echo LRX', 'Automatic', '20')]
for car in cars:
print car
HTH!
答案 1 :(得分:5)
Python有classes。我不知道你的数据结构是否有意义,但你可以将所有内容组织成一个Car
类的集合。
答案 2 :(得分:0)
为什么不创建JSON结构?从语义上讲,您可能能够获得更多的表达能力,而不是将数据作为字典元素访问。
答案 3 :(得分:0)
一个想法 - 展平由句点分隔的多段名称所嵌套的词典。 E.g。
cars.setvalue('toyota.prius.transmission', 'automatic')
cars.setvalue('toyota.prius.mpg', '30')
cars.setvalue('toyota.prius.misc', [])
cars.getvalue('toyota.prius.misc').append('hello')
class Car:
def setvalue(self, key, value):
# parse the key and do your mess here, like
# cars['toyota'].setdefault('prius', {}).setdefault('misc', [])