Python数据结构用于类似于map的访问

2024-06-10 00:39:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个python中的容器,我可以像这样访问:

map = buildMap()

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

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

在python中有类似的东西吗(从2.7到更低版本)?你知道吗


Tags: maposversion容器osa低版本buildmapversionb
2条回答

嗯,你有dict可以满足你的需求。你知道吗

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

这是一本字典,它的值就是字典本身。你知道吗

您可以创建一个类和一个字典,在其中可以用键字符串映射类的实例,如下所示

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

或者,可以使用^{},如下所示

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派生的。你知道吗

相关问题 更多 >