Python数据结构,用于访问地图

时间:2014-01-21 09:20:51

标签: python

我需要一个python中的容器,我可以像这样访问/或类似于

map = buildMap()

versionA = map['A'].version
osA = map['A'].os

versionB = map['B'].version
osB = map['B'].os

在python中有这样的东西(从2.7及以下)?

2 个答案:

答案 0 :(得分:4)

您可以创建一个类和一个字典,您可以使用键字符串映射类的实例,例如

class OSMap(object):
    def __init__(self, os = "", version = ""):
        self.os = os
        self.version = version

os_map = dict()
os_map["A"] = OSMap("Windows", "7")
os_map["B"] = OSMap("Ubuntu", "13.10")
print os_map["A"].version, os_map["A"].os
print os_map["B"].version, os_map["B"].os

<强>输出

7 Windows
13.10 Ubuntu

或者,您可以使用collections.namedtuple,就像这样

from collections import namedtuple
OSMap = namedtuple("OSMap", ("os", "version"))

os_map = dict()
os_map["A"] = OSMap("Windows", "7")
os_map["B"] = OSMap("Ubuntu", "13.10")
print os_map["A"].version, os_map["A"].os
print os_map["B"].version, os_map["B"].os

注意: namedtuple对象以后无法更改,因为它们来自tuple

答案 1 :(得分:0)

嗯,你有dict做你想要的。

my_map = dict()
my_map['A'] = {'os': 'osa'}
my_map['B'] = {'os': 'osb'}

这是一本字典,其值本身就是字典。