是否有更好的方法来保存这些数据然后是字典词典?蟒蛇

时间:2010-08-06 19:43:52

标签: python dictionary

我正在动态创建一个包含汽车信息的数据结构。字典看起来像这样:

cars = {'toyota': {'prius': {'transmission':'automatic', 'mpg':30, 'misc':[]}}}

最外面的词典包含汽车品牌(丰田,宝马等),第二个词典包含模型(prius,m5等),内部词典包含汽车的细节。这是保存此信息的最佳方式吗?

我正在构建数据结构并访问它。我真的不能想到另一种方法,但代码看起来有点混乱:

cars['toyota'].setdefault('prius', {}).setdefault('misc', []).append('hello')

4 个答案:

答案 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', [])