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

标签 python

我需要一个 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/

相关文章:

python - Mirametrix S2 凝视追踪器 : Sending general purpose input (GPI) values always fails

python - cx_卡住。安装后如何安装服务和执行脚本

python - 禁止(状态代码 : 403) Can't send messages to this user

python - 自然语言处理 - 初学者项目的想法

python - 谷歌应用引擎 : traffic monitoring

python - 使用正则表达式在Python中查找字符串的三个部分

python - 验证均匀分布的 3D 坐标的分布

python - 这个python代码线程安全吗(扭曲的线程)?

python - Python 将 3 channel rgb 彩色图像更改为 1 channel 灰色的速度有多快?

python - 从列表中删除空的 Counter() 对象