我需要一个 python 容器,我可以像/或类似这样访问它:
map = buildMap()
versionA = map['A'].version
osA = map['A'].os
versionB = map['B'].version
osB = map['B'].os
在 python(2.7 及以下)中有类似的东西吗?
最佳答案
您可以创建一个类和一个字典,您可以在其中使用键字符串映射类的实例,就像这样
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
。
关于用于类似访问的 map 的Python数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253837/