python - 如何从分隔列表创建关联数组?

标签 python multidimensional-array

我正在以这种格式处理从存储设备读出的数据:

id:name:UPS_serial_number:WWNN:status:IO_group_id:IO_group_name:config_node:UPS_unique_id:hardware:iscsi_name:iscsi_alias:panel_name:enclosure_id:canister_id:enclosure_serial_number:site_id:site_name
10:node_A::00A550:online:0:io_grp0:yes::SV1:iqn.1986-03.com:2145.test.nodeA::A:::::
15:node_B::00A548:online:0:io_grp0:no::SV1:iqn.1986-03.com.:2145.test.nodeB::B:::::

如何将该数据读取为二维数组,例如 dataarray['15']['status']

我尝试过这种方法:

# Create array
datarray = []
try:
    # Loop trough list
    for i, x in enumerate(lis):
        # Split on the delimter
        linesplit = x.split(":")
        row = []
        for lsi,lsx in enumerate(linesplit):
            row.append([lsi,lsx])
        datarray.append(row)

但这似乎对数据的切片是错误的:

[[[0, u'id'], [1, u'name'], [2, u'UPS_serial_number'], [3, u'WWNN'], [4, u'status'], [5, u'IO_group_id'], [6, u'IO_group_name'], [7, u'config_node'], [8, u'UPS_unique_id'], [9, u'hardware'], [10, u'iscsi_name'], [11, u'iscsi_alias'], [12, u'panel_name'], [13, u'enclosure_id'],

最佳答案

使用 csv.DictReader将各行作为字典读取,然后使用字典理解来创建将 ID 属性映射到具有该 ID 的内部字典的“外部”字典。

raw = """id:name:UPS_serial_number:WWNN:status:IO_group_id:IO_group_name:config_node:UPS_unique_id:hardware:iscsi_name:iscsi_alias:panel_name:enclosure_id:canister_id:enclosure_serial_number:site_id:site_name
10:node_A::00A550:online:0:io_grp0:yes::SV1:iqn.1986-03.com:2145.test.nodeA::A:::::
15:node_B::00A548:online:0:io_grp0:no::SV1:iqn.1986-03.com.:2145.test.nodeB::B:::::"""

reader = csv.DictReader(raw.splitlines(), delimiter=":")
result = {line["id"]: line for line in reader}
print(result["15"]["status"])  # 'online'

请注意,这不是一个二维数组,而是一个字典的字典(字典是关联数组)。作为简单的二维数组,像 result["15"]["status"] 这样的查询将不起作用。

关于python - 如何从分隔列表创建关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51880271/

相关文章:

c - 二维数组引用整个索引,而不是 C 中的单个单元格

Javascript:排序多维数组

arrays - 该程序将每行的第三个元素的值设置为 20。为什么它不起作用?

python - 尝试获取 Twitter 授权的访问 key 时出现 401 错误

python - 如何提高 django 中软删除的性能?

java - 如何用Gson反序列化未知维度的数组?

C - 二维数组 - 幻方阶 4

python - Hadoop:在 Ubuntu 12.04 中通过 NameNode 格式化 HDFS 文件系统

python - 使用 Beautiful Soup 查找跨度中的部分类名

python - 如何按给定日期时间索引的日期进行搜索